Skip to content

Commit 085a0cf

Browse files
committed
Added retry handler and modified retry logic
1 parent 338fab2 commit 085a0cf

File tree

3 files changed

+20
-24
lines changed

3 files changed

+20
-24
lines changed

validator/src/main/java/com/amazon/aoc/callers/HttpCaller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class HttpCaller implements ICaller {
2020

2121
public HttpCaller(String endpoint, String path) {
2222
this.url = endpoint + path;
23-
log.info("validator is testing {} path", this.url);
23+
log.info("validator is trying to hit this {} endpoint", this.url);
2424
}
2525

2626
@Override

validator/src/main/java/com/amazon/aoc/helpers/RetryHelper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public static void retry(int retryCount, int sleepInMilliSeconds, Retryable retr
4040
retryable.execute();
4141
return;
4242
} catch (Exception ex) {
43-
log.error("exception during retry, you may ignore it", ex);
43+
log.info("retrying after 10 seconds");
44+
45+
if (retryCount == 0) {
46+
log.error("retries exhausted, possible exception: ", ex);
47+
break;
48+
}
4449
TimeUnit.MILLISECONDS.sleep(sleepInMilliSeconds);
4550
}
4651
}

validator/src/main/java/com/amazon/aoc/validators/TraceValidator.java

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.amazon.aoc.exception.ExceptionCode;
2121
import com.amazon.aoc.fileconfigs.FileConfig;
2222
import com.amazon.aoc.helpers.MustacheHelper;
23+
import com.amazon.aoc.helpers.RetryHelper;
2324
import com.amazon.aoc.models.Context;
2425
import com.amazon.aoc.models.SampleAppResponse;
2526
import com.amazon.aoc.services.XRayService;
@@ -28,7 +29,7 @@
2829
import lombok.extern.log4j.Log4j2;
2930

3031
import java.util.*;
31-
import java.util.concurrent.TimeUnit;
32+
import java.util.concurrent.atomic.AtomicReference;
3233

3334
@Log4j2
3435
public class TraceValidator implements IValidator {
@@ -80,33 +81,23 @@ public void validate() throws Exception {
8081
// this method will hit get trace from x-ray service and get retrieved trace
8182
private Map<String, Object> getRetrievedTrace(List<String> traceIdList) throws Exception {
8283
Map<String, Object> flattenedJsonMapForRetrievedTrace = null;
83-
List<Trace> retrieveTraceList = null;
84+
AtomicReference<List<Trace>> retrieveTraceListAtomicReference = new AtomicReference<>();
8485
int MAX_RETRY_COUNT = 3;
85-
int count = 1;
8686

87-
while (retrieveTraceList == null || retrieveTraceList.isEmpty()) {
88-
// wait for sample app to send trace data to x-ray
89-
log.info("sleeping for 15 seconds before retrieving data from x-ray service");
90-
TimeUnit.SECONDS.sleep(15);
87+
RetryHelper.retry(MAX_RETRY_COUNT, () -> {
88+
List<Trace> retrieveTraceList = null;
89+
retrieveTraceList = xrayService.listTraceByIds(traceIdList);
90+
retrieveTraceListAtomicReference.set(retrieveTraceList);
9191

92-
try {
93-
retrieveTraceList = xrayService.listTraceByIds(traceIdList);
94-
} catch (Exception e) {
95-
log.error("exception while retrieving trace data from x-ray service" + e.getMessage());
96-
e.printStackTrace();
97-
}
98-
99-
if (count == MAX_RETRY_COUNT) {
100-
break;
92+
if (retrieveTraceList == null || retrieveTraceList.isEmpty()) {
93+
throw new BaseException(ExceptionCode.EMPTY_LIST);
10194
}
102-
103-
count++;
104-
}
95+
});
10596

10697
// flattened JSON object to a map
107-
if (retrieveTraceList != null && !retrieveTraceList.isEmpty()) {
108-
try{
109-
flattenedJsonMapForRetrievedTrace = JsonFlattener.flattenAsMap(retrieveTraceList.get(0).getSegments().get(0).getDocument());
98+
if (retrieveTraceListAtomicReference.get() != null && !retrieveTraceListAtomicReference.get().isEmpty()) {
99+
try {
100+
flattenedJsonMapForRetrievedTrace = JsonFlattener.flattenAsMap(retrieveTraceListAtomicReference.get().get(0).getSegments().get(0).getDocument());
110101
} catch (Exception e) {
111102
log.error("exception while flattening the retrieved trace: " + e.getMessage());
112103
e.printStackTrace();

0 commit comments

Comments
 (0)