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 2015/11/05 14:35:31 UTC

svn commit: r1712764 - in /sling/trunk/bundles/extensions/discovery: base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java

Author: stefanegli
Date: Thu Nov  5 13:35:30 2015
New Revision: 1712764

URL: http://svn.apache.org/viewvc?rev=1712764&view=rev
Log:
SLING-5264 follow-up : adding more logging to analyzeVotings/promote and AbstractDiscoveryServiceTest to track down still existing issue

Modified:
    sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java
    sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java

Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java?rev=1712764&r1=1712763&r2=1712764&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java Thu Nov  5 13:35:30 2015
@@ -252,59 +252,74 @@ public abstract class AbstractDiscoveryS
 
     @Test
     public void testSingleInstance() throws Throwable {
+        logger.info("testSingleInstances: start");
         Tester single = newInstance("single", 1, 5, 50, null);
         single.instance.dumpRepo();
+        logger.info("testSingleInstances: starting retry loop (10sec max)");
         startRetryLoop(testers, 10);
         single.assertNoFailures();
         assertStableTopology(single);
+        logger.info("testSingleInstances: end");
     }
     
     @Test
     public void testTwoInstances() throws Throwable {
+        logger.info("testTwoInstances: start");
         Tester i1 = newInstance("i1", 1, 10, 100, null);
         Tester i2 = newInstance("i2", 1, 10, 100, i1.instance);
+        logger.info("testTwoInstances: starting retry loop (15sec max)");
         startRetryLoop(testers, 15);
         i1.instance.dumpRepo();
         i1.assertNoFailures();
         i2.assertNoFailures();
         assertStableTopology(i1, i2);
+        logger.info("testTwoInstances: end");
     }
 
     @Test
     public void testTenInstances() throws Throwable {
+        logger.info("testTenInstances: start");
         Tester i1 = newInstance("i1", 1, 30, 250, null);
         for(int i=2; i<=10; i++) {
             Tester in = newInstance("i"+i, 1, 30, 250, i1.instance);
         }
+        logger.info("testTenInstances: starting retry loop (60sec max)");
         startRetryLoop(testers, 60);
         i1.instance.dumpRepo();
         i1.assertNoFailures();
         assertStableTopology(testers.toArray(new Tester[0]));
+        logger.info("testTenInstances: end");
     }
 
     @Test
     public void testTwentyInstances() throws Throwable {
+        logger.info("testTwentyInstances: start");
         Tester i1 = newInstance("i1", 1, 60, 1000, null);
         for(int i=2; i<=20; i++) {
             Tester in = newInstance("i"+i, 1, 60, 1000, i1.instance);
         }
+        logger.info("testThirtyInstances: starting retry loop (80 sec max)");
         startRetryLoop(testers, 80);
         i1.instance.dumpRepo();
         i1.assertNoFailures();
         assertStableTopology(testers.toArray(new Tester[0]));
+        logger.info("testTwentyInstances: end");
     }
 
     @Test
     public void testThirtyInstances() throws Throwable {
+        logger.info("testThirtyInstances: start");
         Tester i1 = newInstance("i1", 4, 120, 1000, null);
         for(int i=2; i<=30; i++) {
             Tester in = newInstance("i"+i, 4, 120, 2000, i1.instance);
             Thread.sleep(1000);
         }
+        logger.info("testThirtyInstances: starting retry loop (180sec max)");
         startRetryLoop(testers, 180);
         i1.instance.dumpRepo();
         i1.assertNoFailures();
         assertStableTopology(testers.toArray(new Tester[0]));
+        logger.info("testThirtyInstances: end");
     }
     
     private void startRetryLoop(final List<Tester> testers, int retryTimeoutSeconds) {

Modified: sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java?rev=1712764&r1=1712763&r2=1712764&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandler.java Thu Nov  5 13:35:30 2015
@@ -241,7 +241,15 @@ public class VotingHandler implements Ev
             if (winningVote.isInitiatedBy(slingId)) {
                 logger.info("analyzeVotings: my voting was winning. I'll mark it as established then! "
 	                        + winningVote);
-                promote(resourceResolver, winningVote.getResource());
+                try{
+                    promote(resourceResolver, winningVote.getResource());
+                } catch (RuntimeException re) {
+                    logger.error("analyzeVotings: RuntimeException during promotion: "+re, re);
+                    throw re;
+                } catch (Error er) {
+                    logger.error("analyzeVotings: Error during promotion: "+er, er);
+                    throw er;
+                }
                 // SLING-3406: committing resourceResolver/session here, while we're in the synchronized
                 resourceResolver.commit();
                 
@@ -439,8 +447,10 @@ public class VotingHandler implements Ev
                 .getChildren().iterator();
         String leaderElectionId = null;
         String leaderid = null;
+        int membersCount = 0;
         while (it2.hasNext()) {
             Resource aMember = it2.next();
+            membersCount++;
             String leid = aMember.adaptTo(ValueMap.class).get(
                     "leaderElectionId", String.class);
             if (leaderElectionId == null
@@ -462,8 +472,8 @@ public class VotingHandler implements Ev
         // 3b: move the result under /established
         final String newEstablishedViewPath = establishedViewsResource.getPath()
                 + "/" + winningVoteResource.getName();
-        logger.info("promote: promote to new established node "
-	                + newEstablishedViewPath);
+        logger.info("promote: promoting to new established node (#members: " + membersCount + ", path: "
+                + newEstablishedViewPath + ")");
         ResourceHelper.moveResource(winningVoteResource, newEstablishedViewPath);
 
         // step 4: delete all ongoing votings...
@@ -473,6 +483,7 @@ public class VotingHandler implements Ev
             Iterator<Resource> it4 = ongoingVotingsChildren.iterator();
             while (it4.hasNext()) {
                 Resource anOngoingVoting = it4.next();
+                logger.info("promote: deleting ongoing voting: "+anOngoingVoting.getName());
                 resourceResolver.delete(anOngoingVoting);
             }
         }
@@ -502,6 +513,8 @@ public class VotingHandler implements Ev
 
         logger.debug("promote: done with promotiong. saving.");
         resourceResolver.commit();
+        logger.info("promote: promotion done (#members: " + membersCount + ", path: "
+                + newEstablishedViewPath + ")");
     }
 
     public void setLeaderElectionId(String leaderElectionId) {