summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaša Živkov <zivkov@gmail.com>2015-01-22 10:30:31 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-22 10:30:32 +0000
commitcaa4c0a8b5afe33f90dea637a76175d98b6dc2ef (patch)
treea33c5405faf329edba116efb72519e7bcb8aa732
parent7406197bc98e05f189392734d478b1db6a43d3db (diff)
parentd134e79fb15b7a97e8cea4e5e13cfebb48729fce (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.java8
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));