keith-turner commented on code in PR #2967:
URL: https://github.com/apache/accumulo/pull/2967#discussion_r990172815


##########
core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java:
##########
@@ -119,6 +127,38 @@ public void modifyProperties(final 
Consumer<Map<String,String>> mapMutator)
     // Send to server
     ThriftClientTypes.MANAGER.executeVoid(context, client -> client
         .modifySystemProperties(TraceUtil.traceInfo(), context.rpcCreds(), 
vProperties));
+
+    return vProperties.getProperties();
+  }
+
+  @Override
+  public Map<String,String> modifyProperties(final 
Consumer<Map<String,String>> mapMutator)
+      throws AccumuloException, AccumuloSecurityException, 
IllegalArgumentException {
+
+    var log = LoggerFactory.getLogger(InstanceOperationsImpl.class);
+
+    Retry retry =
+        Retry.builder().infiniteRetries().retryAfter(25, 
MILLISECONDS).incrementBy(25, MILLISECONDS)
+            .maxWait(30, SECONDS).backOffFactor(1.5).logInterval(3, 
MINUTES).createRetry();
+
+    while (true) {
+      try {
+        var props = tryToModifyProperties(mapMutator);
+        retry.logCompletion(log, "Modifying instance properties");
+        return props;
+      } catch (ConcurrentModificationException cme) {
+        try {
+          retry.logRetry(log,
+              "Unable to modify instance properties for because of concurrent 
modification");
+          retry.waitForNextAttempt();
+        } catch (InterruptedException e) {
+          throw new RuntimeException(e);
+        }
+      } finally {
+        retry.useRetry();

Review Comment:
   >  wonder if instead of calling the method Retry.logCompletion, it should be 
called Retry.completed(msg) and then it disables any checks that might throw 
errors.
   
   I was also contemplating something similar when i wrote it, was thinking of 
names like `close()`, `finished()` and `completed()`.  Then was thinking like 
you said that those would require wider changes in the Retry class. I didn't 
want to do those changes in the PR so decided to make it more narrow and just 
focused on the need that was identified for logging completion. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to