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/04 18:51:06 UTC

svn commit: r1712599 - /sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java

Author: stefanegli
Date: Wed Nov  4 17:51:06 2015
New Revision: 1712599

URL: http://svn.apache.org/viewvc?rev=1712599&view=rev
Log:
SLING-5244 : added a retry-loop upon getting a test-related exception

Modified:
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java?rev=1712599&r1=1712598&r2=1712599&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java Wed Nov  4 17:51:06 2015
@@ -291,17 +291,40 @@ public class VotingHandlerTest {
                 boolean released = false;
                 try{
                     logger.info("asyncVote["+debugInfo+"] logging in...");
-                    ResourceResolver rr = factory.getAdministrativeResourceResolver(null);
-                    logger.info("asyncVote["+debugInfo+"] marking ready...");
-                    ready.release();
-                    logger.info("asyncVote["+debugInfo+"] waiting for go...");
-                    go.acquire();
-                    logger.info("asyncVote["+debugInfo+"] analyzeVotings...");
-                    Map<VotingView, VotingDetail> result = votingHandler.analyzeVotings(rr);
+                    Map<VotingView, VotingDetail> result = null;
+                    ResourceResolver rr = null;
+                    int retries = 0;
+                    while(true) {
+                        try{
+                            rr = factory.getAdministrativeResourceResolver(null);
+                            if (retries == 0) {
+                                logger.info("asyncVote["+debugInfo+"] marking ready...");
+                                ready.release();
+                                logger.info("asyncVote["+debugInfo+"] waiting for go...");
+                                go.acquire();
+                            } else {
+                                logger.info("asyncVote["+debugInfo+"] not doing ready/go on retry.");
+                            }
+                            logger.info("asyncVote["+debugInfo+"] analyzeVotings...");
+                            result = votingHandler.analyzeVotings(rr);
+                            break;
+                        } catch(Exception e) {
+                            logger.warn("asyncVote["+debugInfo+"] Exception: "+e, e);
+                            if (retries++<5) {
+                                Thread.sleep(500);
+                                logger.info("asyncVote["+debugInfo+"] retrying after Exception...");
+                                continue;
+                            }
+                            throw e;
+                        } finally {
+                            if (rr != null) {
+                                rr.close();
+                            }
+                        }
+                    }
                     logger.info("asyncVote["+debugInfo+"] done, asserting results...");
                     assertNotNull(result);
                     votingDetails.addAll(result.values());
-                    rr.close();
                     logger.info("asyncVote["+debugInfo+"] marking done.");
                     done.release();
                     released = true;