Lower the size of deviceContext synchronized block 22/19822/2
authorRobert Varga <rovarga@cisco.com>
Thu, 7 May 2015 15:54:53 +0000 (17:54 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 7 May 2015 16:05:14 +0000 (18:05 +0200)
The synchronized block is needlessly large, slowing things down with
unrelated transitions happening.

Change-Id: I700ba58f567c592a611fd50f94cf27594385f865
Signed-off-by: Robert Varga <rovarga@cisco.com>
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/callback/BaseCallback.java

index 1f3379c072e579a5f6ecc9a6f72fc7df3fdaff60..63d5f296dd313b6776ef078397aae7c4832b5cc1 100644 (file)
@@ -29,7 +29,7 @@ public class BaseCallback<I, O> implements FutureCallback<RpcResult<I>> {
 
     protected DeviceContext deviceContext;
     protected RequestContext<O> requestContext;
-    private ListenableFuture<RpcResult<I>> futureResultFromOfLib;
+    private final ListenableFuture<RpcResult<I>> futureResultFromOfLib;
 
     public BaseCallback(final DeviceContext deviceContext, final RequestContext<O> requestContext, final ListenableFuture<RpcResult<I>> futureResultFromOfLib) {
         this.deviceContext = deviceContext;
@@ -45,18 +45,19 @@ public class BaseCallback<I, O> implements FutureCallback<RpcResult<I>> {
 
                 // remove current request from request cache in deviceContext
                 deviceContext.unhookRequestCtx(requestContext.getXid());
-                // handle requestContext failure
-                StringBuilder rpcErrors = new StringBuilder();
-                if (null != fRpcResult.getErrors() && fRpcResult.getErrors().size() > 0) {
-                    for (RpcError error : fRpcResult.getErrors()) {
-                        rpcErrors.append(error.getMessage());
-                    }
+            }
+
+            // handle requestContext failure
+            StringBuilder rpcErrors = new StringBuilder();
+            if (null != fRpcResult.getErrors() && fRpcResult.getErrors().size() > 0) {
+                for (RpcError error : fRpcResult.getErrors()) {
+                    rpcErrors.append(error.getMessage());
                 }
-                LOG.trace("OF Java result for XID {} was not successful. Errors : {}", requestContext.getXid().getValue(), rpcErrors.toString());
-                requestContext.getFuture().set(
-                        RpcResultBuilder.<O>failed().withRpcErrors(fRpcResult.getErrors()).build());
-                RequestContextUtil.closeRequstContext(requestContext);
             }
+            LOG.trace("OF Java result for XID {} was not successful. Errors : {}", requestContext.getXid().getValue(), rpcErrors.toString());
+            requestContext.getFuture().set(
+                RpcResultBuilder.<O>failed().withRpcErrors(fRpcResult.getErrors()).build());
+            RequestContextUtil.closeRequstContext(requestContext);
         } else {
             // else: message was successfully sent - waiting for callback on requestContext.future to get invoked
             // or can be implemented specific processing via processSuccess() method