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;