summaryrefslogtreecommitdiffstats
path: root/holmes-actions/src
diff options
context:
space:
mode:
authorGuangrong Fu <fu.guangrong@zte.com.cn>2022-05-06 09:07:20 +0800
committerGuangrong Fu <fu.guangrong@zte.com.cn>2022-05-16 01:29:18 +0000
commitc00264599085dc0e29ca4f2cd4e24f00b0301ff1 (patch)
treefc847d3addbf2bcee00047739255d481bcc61ffa /holmes-actions/src
parentc44e23778d9bbd1218397c759c641d811a9e8e8d (diff)
Optimized retry in the exception branchjakarta
Missed a conditional branch before, now fixed that. Issue-ID: HOLMES-536 Signed-off-by: Guangrong Fu <fu.guangrong@zte.com.cn> Change-Id: I682d31e14b30d1fbeb903760ae0788a25806d9b0 (cherry picked from commit b1cf3bb5648e23c65d78a808d8185d44d0727b1c)
Diffstat (limited to 'holmes-actions/src')
-rw-r--r--holmes-actions/src/main/java/org/onap/holmes/common/utils/MsbRegister.java13
-rw-r--r--holmes-actions/src/test/java/org/onap/holmes/common/utils/MsbRegisterTest.java35
2 files changed, 44 insertions, 4 deletions
diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/utils/MsbRegister.java b/holmes-actions/src/main/java/org/onap/holmes/common/utils/MsbRegister.java
index b8f6b86..33b53c7 100644
--- a/holmes-actions/src/main/java/org/onap/holmes/common/utils/MsbRegister.java
+++ b/holmes-actions/src/main/java/org/onap/holmes/common/utils/MsbRegister.java
@@ -60,9 +60,9 @@ public class MsbRegister {
MicroServiceFullInfo microServiceFullInfo = null;
int retry = 0;
while (null == microServiceFullInfo && retry < totalRetryTimes) {
+ int time = interval * ++retry;
try {
- log.info("Holmes Service Registration. Times: " + ++retry);
- int time = interval * retry;
+ log.info("Holmes Service Registration. Times: " + retry);
microServiceFullInfo = client
.header("Accept", MediaType.APPLICATION_JSON)
.queryParam("createOrUpdate", true)
@@ -72,14 +72,14 @@ public class MsbRegister {
MicroServiceFullInfo.class);
if (null == microServiceFullInfo) {
- log.warn(String.format("Failed to register the service to MSB. Sleep %ds and try again.", time));
- threadSleep(TimeUnit.SECONDS.toSeconds(time));
+ retry(time);
} else {
log.info("Registration succeeded!");
break;
}
} catch (Exception e) {
log.warn("Unexpected exception: " + e.getMessage(), e);
+ retry(time);
}
}
@@ -90,6 +90,11 @@ public class MsbRegister {
log.info("Service registration completed.");
}
+ private void retry(int intervalInSecond) {
+ log.warn(String.format("Failed to register the service to MSB. Sleep %ds and try again.", intervalInSecond));
+ threadSleep(TimeUnit.SECONDS.toSeconds(intervalInSecond));
+ }
+
private void threadSleep(long second) {
log.info("Start sleeping...");
try {
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/utils/MsbRegisterTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/utils/MsbRegisterTest.java
index 0201935..828fe0c 100644
--- a/holmes-actions/src/test/java/org/onap/holmes/common/utils/MsbRegisterTest.java
+++ b/holmes-actions/src/test/java/org/onap/holmes/common/utils/MsbRegisterTest.java
@@ -118,4 +118,39 @@ public class MsbRegisterTest {
PowerMock.verifyAll();
}
+
+ @Test
+ public void test_register2Msb_fail_n_times_due_to_exception() {
+ int requestTimes = 3;
+ expect(mockedJerseyClient.header("Accept", MediaType.APPLICATION_JSON)).andReturn(mockedJerseyClient).times(requestTimes);
+ expect(mockedJerseyClient.queryParam("createOrUpdate", true)).andReturn(mockedJerseyClient).times(requestTimes);
+ expect(mockedJerseyClient.post(anyObject(String.class),
+ anyObject(Entity.class),
+ anyObject(Class.class)))
+ .andThrow(new RuntimeException("Failure!")).times(requestTimes - 1);
+
+ expect(mockedJerseyClient.post(anyObject(String.class),
+ anyObject(Entity.class),
+ anyObject(Class.class)))
+ .andReturn(GsonUtil.jsonToBean("{\"serviceName\":\"holmes-engine-mgmt\"," +
+ "\"version\":\"v1\",\"url\":\"/api/holmes-engine-mgmt/v1\",\"protocol\":\"REST\"," +
+ "\"visualRange\":\"0|1\",\"lb_policy\":\"\",\"publish_port\":\"\",\"namespace\":\"\"," +
+ "\"network_plane_type\":\"\",\"host\":\"\",\"path\":\"/api/holmes-engine-mgmt/v1\"," +
+ "\"enable_ssl\":true,\"nodes\":[{\"ip\":\"127.0.0.1\",\"port\":\"9102\",\"checkType\":\"\"," +
+ "\"checkUrl\":\"\",\"tls_skip_verify\":true,\"ha_role\":\"\",\"nodeId\":\"_v1_holmes-engine-mgmt_127.0.0.1_9102\"," +
+ "\"status\":\"passing\"}],\"metadata\":[],\"labels\":[],\"status\":\"1\",\"is_manual\":false}",
+ MicroServiceFullInfo.class));
+
+ PowerMock.replayAll();
+
+ MsbRegister msbRegister = new MsbRegister();
+ msbRegister.setInterval(1);
+ try {
+ msbRegister.register2Msb(msi);
+ } catch (CorrelationException e) {
+ // Do nothing
+ }
+
+ PowerMock.verifyAll();
+ }
} \ No newline at end of file