diff options
author | Saša Živkov <zivkov@gmail.com> | 2015-01-22 10:30:31 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-01-22 10:30:32 +0000 |
commit | caa4c0a8b5afe33f90dea637a76175d98b6dc2ef (patch) | |
tree | a33c5405faf329edba116efb72519e7bcb8aa732 | |
parent | 7406197bc98e05f189392734d478b1db6a43d3db (diff) | |
parent | d134e79fb15b7a97e8cea4e5e13cfebb48729fce (diff) |
Merge "Fix plugin reloading for DynamicItems" into stable-2.10
-rw-r--r-- | gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicItem.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicItem.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicItem.java index 9ef7d1b783..7edfaed1a9 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicItem.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicItem.java @@ -184,7 +184,13 @@ public class DynamicItem<T> { NamedProvider<T> old = null; while (!ref.compareAndSet(old, item)) { old = ref.get(); - if (old != null && !"gerrit".equals(old.pluginName)) { + if (old != null + && !"gerrit".equals(old.pluginName) + && !pluginName.equals(old.pluginName)) { + // We allow to replace: + // 1. Gerrit core items, e.g. websession cache + // can be replaced by plugin implementation + // 2. Reload of current plugin throw new ProvisionException(String.format( "%s already provided by %s, ignoring plugin %s", this.key.getTypeLiteral(), old.pluginName, pluginName)); |