Don't log cancellation exception 98/102798/1
authorJim Hahn <jrh3@att.com>
Tue, 3 Mar 2020 02:50:28 +0000 (21:50 -0500)
committerJim Hahn <jrh3@att.com>
Tue, 3 Mar 2020 02:50:28 +0000 (21:50 -0500)
When an Actor operation is canceled it's done on purpose, yet the whole
exception stack trace is included in the log.  Modified the code to
leave out the stack trace for cancellations.  I don't THINK this will
cause a sonar issue, as it isn't the exception is never caught via
a "catch" clause.

Issue-ID: POLICY-1625
Signed-off-by: Jim Hahn <jrh3@att.com>
Change-Id: Ib5238e4791ae491b30286cdc8ed9caf67432dc26

models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartial.java

index 0436044..653f569 100644 (file)
@@ -28,6 +28,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Queue;
+import java.util.concurrent.CancellationException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
 import java.util.concurrent.Executor;
@@ -528,8 +529,14 @@ public abstract class OperationPartial implements Operation {
         return thrown -> {
             OperationOutcome outcome = params.makeOutcome();
 
-            logger.warn("exception throw by {} {}.{} for {}", type, outcome.getActor(), outcome.getOperation(),
-                            params.getRequestId(), thrown);
+            if (thrown instanceof CancellationException || thrown.getCause() instanceof CancellationException) {
+                // do not include exception in the message, as it just clutters the log
+                logger.warn("{} canceled {}.{} for {}", type, outcome.getActor(), outcome.getOperation(),
+                                params.getRequestId());
+            } else {
+                logger.warn("exception throw by {} {}.{} for {}", type, outcome.getActor(), outcome.getOperation(),
+                                params.getRequestId(), thrown);
+            }
 
             return setOutcome(outcome, thrown);
         };