You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:26:30 UTC
[sling-org-apache-sling-discovery-commons] 27/38: SLING-5173 :
bugfix for leader changes: leader change was treated as a properties change
- which was very bad - now it is properly treated as a TOPOLOGY_CHANGED.
Note that leader change should not happen in an otherwise unchanged
topology - but it can if one instance's discovery.oak bundle for example is
restarted,
thus getting a lower leaderElectionId. Thus discovery.commons must account
for this
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.discovery.commons-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-commons.git
commit df6d8658e503e7eb5efdefc2b52fb3a7638485c2
Author: Stefan Egli <st...@apache.org>
AuthorDate: Thu Oct 22 15:35:44 2015 +0000
SLING-5173 : bugfix for leader changes: leader change was treated as a properties change - which was very bad - now it is properly treated as a TOPOLOGY_CHANGED. Note that leader change should not happen in an otherwise unchanged topology - but it can if one instance's discovery.oak bundle for example is restarted, thus getting a lower leaderElectionId. Thus discovery.commons must account for this
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/commons@1710040 13f79535-47bb-0310-9956-ffa450edef68
---
.../commons/providers/base/MinEventDelayHandler.java | 2 +-
.../commons/providers/base/ViewStateManagerImpl.java | 14 +++++++++-----
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/apache/sling/discovery/commons/providers/base/MinEventDelayHandler.java b/src/main/java/org/apache/sling/discovery/commons/providers/base/MinEventDelayHandler.java
index 068cf7e..a8a0066 100644
--- a/src/main/java/org/apache/sling/discovery/commons/providers/base/MinEventDelayHandler.java
+++ b/src/main/java/org/apache/sling/discovery/commons/providers/base/MinEventDelayHandler.java
@@ -87,7 +87,7 @@ class MinEventDelayHandler {
return false;
}
- if (viewStateManager.isPropertiesDiff(newView)) {
+ if (viewStateManager.onlyDiffersInProperties(newView)) {
logger.info("handlesNewView: only properties differ, hence no delaying applicable");
return false;
}
diff --git a/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java b/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
index 70fa33f..9fa980b 100644
--- a/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
+++ b/src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java
@@ -454,7 +454,7 @@ public class ViewStateManagerImpl implements ViewStateManager {
logger.debug("handleNewViewNonDelayed: we were not in changing state and new view matches old, so - ignoring");
return false;
}
- if (previousView==null || !isPropertiesDiff(newView)) {
+ if (previousView==null || !onlyDiffersInProperties(newView)) {
logger.debug("handleNewViewNonDelayed: implicitly triggering a handleChanging as we were not in changing state");
handleChanging();
logger.debug("handleNewViewNonDelayed: implicitly triggering of a handleChanging done");
@@ -475,7 +475,7 @@ public class ViewStateManagerImpl implements ViewStateManager {
}
// now check if the view indeed changed or if it was just the properties
- if (!isChanging && isPropertiesDiff(newView)) {
+ if (!isChanging && onlyDiffersInProperties(newView)) {
// well then send a properties changed event only
// and that one does not go via consistencyservice
logger.info("handleNewViewNonDelayed: properties changed to: "+newView);
@@ -552,7 +552,7 @@ public class ViewStateManagerImpl implements ViewStateManager {
}
}
- protected boolean isPropertiesDiff(BaseTopologyView newView) {
+ protected boolean onlyDiffersInProperties(BaseTopologyView newView) {
if (previousView==null) {
return false;
}
@@ -571,13 +571,17 @@ public class ViewStateManagerImpl implements ViewStateManager {
}
for(InstanceDescription oldInstance : previousView.getInstances()) {
- if (!newIds.contains(oldInstance.getSlingId())) {
+ InstanceDescription newInstance = newView.getInstance(oldInstance.getSlingId());
+ if (newInstance == null) {
+ return false;
+ }
+ if (oldInstance.isLeader() != newInstance.isLeader()) {
return false;
}
}
return true;
}
-
+
private void doHandleConsistent(BaseTopologyView newView) {
logger.trace("doHandleConsistent: start");
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.