You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/07/05 15:01:57 UTC
svn commit: r1499993 -
/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java
Author: stefanegli
Date: Fri Jul 5 13:01:57 2013
New Revision: 1499993
URL: http://svn.apache.org/r1499993
Log:
SLING-2945 related : ClusterLoadTest discovered another race condition where during a vote.matches the vote is deleted. Handling this situation properly now
Modified:
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java
Modified: sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java?rev=1499993&r1=1499992&r2=1499993&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/View.java Fri Jul 5 13:01:57 2013
@@ -100,13 +100,20 @@ public class View {
if (members == null) {
return false;
}
- final Iterator<Resource> it = members.getChildren().iterator();
- while (it.hasNext()) {
- Resource aMemberRes = it.next();
-
- if (!viewCopy.remove(aMemberRes.getName())) {
- return false;
- }
+ try{
+ final Iterator<Resource> it = members.getChildren().iterator();
+ while (it.hasNext()) {
+ Resource aMemberRes = it.next();
+
+ if (!viewCopy.remove(aMemberRes.getName())) {
+ return false;
+ }
+ }
+ } catch(RuntimeException re) {
+ // SLING-2945 : the members resource could have been deleted
+ // by another party simultaneously
+ // so treat this situation nicely
+ return false;
}
// now the ViewCopy set must be empty to represent a match
return (viewCopy.size() == 0);