SLING-5244 : added a retry-loop upon getting a test-related exception

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1712599 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java b/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
index c8963e0..718c2e2 100644
--- a/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
+++ b/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
@@ -291,17 +291,40 @@
                 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;