diff options
author | 2017-11-22 21:22:02 +0000 | |
---|---|---|
committer | 2017-11-22 21:37:44 +0000 | |
commit | 69453d796578d46f1c0b98964b3a786718a86863 (patch) | |
tree | 3be3bf39287351978fdef2c54984aca9a8ee8cf5 /vnfapi/provider/src/main | |
parent | 1240ccff36e26154de009bb16a024e221566fb80 (diff) |
Deleting missing vnf-list entry cause infiniteLoop
Deleting a vnf-list entry that does not exist from
the databoker throws a
ModifiedNodeDoesNotExistException. This
conflicted with the optimistic locking retry
mechanism causing a infinite loop.
Change-Id: I216a31eabf710ed365c8d928e4df0e866848eeca
Issue-ID: SDNC-156
Signed-off-by: Joey Sullivan <joey.sullivan@amdocs.com>
Diffstat (limited to 'vnfapi/provider/src/main')
-rw-r--r-- | vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java b/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java index e8a9e716..30f85859 100644 --- a/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java +++ b/vnfapi/provider/src/main/java/org/onap/sdnc/vnfapi/vnfapiProvider.java @@ -771,30 +771,33 @@ public class vnfapiProvider implements AutoCloseable, VNFAPIService, DataChangeL InstanceIdentifier.<Vnfs>builder(Vnfs.class).child(VnfList.class, entry.getKey()); InstanceIdentifier<VnfList> path = vnfListIdBuilder.build(); - int tries = 2; - while (true) { + int optimisticLockTries = 2; + boolean tryAgain =true; + while (tryAgain) { + tryAgain = false; try { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.delete(storeType, path); tx.submit().checkedGet(); log.debug("DataStore delete succeeded"); - break; } catch (final TransactionCommitFailedException e) { if (e instanceof OptimisticLockFailedException) { - if (--tries <= 0) { + if (--optimisticLockTries <= 0) { log.debug("Got OptimisticLockFailedException on last try - failing "); throw new IllegalStateException(e); } log.debug("Got OptimisticLockFailedException - trying again "); + tryAgain = true; + continue; } - else { - if (e.getCause() instanceof ModifiedNodeDoesNotExistException) { - log.debug("Ignoring MpdifiedNodeDoesNotExistException"); - } else { - log.debug("Delete DataStore failed"); - throw new IllegalStateException(e); - } + + if (e.getCause() instanceof ModifiedNodeDoesNotExistException) { + log.debug("Ignoring MpdifiedNodeDoesNotExistException"); + break; } + + log.debug("Delete DataStore failed"); + throw new IllegalStateException(e); } } } |