Michael Kublin has uploaded a new change for review.

Change subject: engine: Correlation id was not send to host - fixing it
......................................................................

engine: Correlation id was not send to host - fixing it

The following patch should fix a bug with correlation id, which was not
send to vdsm
In order to send it a correlation id should be kept inside internal callable

Change-Id: I45867ee8aea7a69ab9025a2ab2301d7cb9d74663
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Michael Kublin <mkub...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcUtils.java
1 file changed, 37 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/12971/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcUtils.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcUtils.java
index 6a8c698..a45143e 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcUtils.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/xmlrpc/XmlRpcUtils.java
@@ -169,11 +169,19 @@
             FutureTask<Object> future;
             FutureCall annotation = m.getAnnotation(FutureCall.class);
             if (annotation != null) {
-                future = new FutureTask<Object>(createCallable(getMethod(m, 
annotation, proxy), args));
+                future =
+                        new FutureTask<Object>(createCallable(obj,
+                                getMethod(m, annotation, proxy),
+                                args,
+                                
ThreadLocalParamsContainer.getCorrelationId()));
                 ThreadPoolUtil.execute(future);
                 return future;
             } else {
-                future = new FutureTask<Object>(createCallable(m, args));
+                future =
+                        new FutureTask<Object>(createCallable(obj,
+                                m,
+                                args,
+                                
ThreadLocalParamsContainer.getCorrelationId()));
                 ThreadPoolUtil.execute(future);
                 try {
                     result = future.get(timeoutInMilisec, 
TimeUnit.MILLISECONDS);
@@ -196,17 +204,34 @@
             return m;
         }
 
-        private Callable<Object> createCallable(final Method m, final Object[] 
args) {
-            return new Callable<Object>() {
-                @Override
-                public Object call() throws Exception {
-                    try {
-                        return m.invoke(obj, args);
-                    } catch (Exception e) {
-                        throw e;
-                    }
+        private Callable<Object> createCallable(Object obj, Method m, Object[] 
args, String correlationId) {
+            return new InternalCallable(obj, m, args, correlationId);
+        }
+
+        private final class InternalCallable implements Callable<Object> {
+
+            private Object obj;
+            private Method m;
+            private Object[] args;
+            private String correlationId;
+
+            public InternalCallable(Object obj, Method m, Object[] args, 
String correlationId) {
+                this.obj = obj;
+                this.m = m;
+                this.args = args;
+                this.correlationId = correlationId;
+            }
+
+            @Override
+            public Object call() throws Exception {
+                try {
+                    ThreadLocalParamsContainer.setCorrelationId(correlationId);
+                    return m.invoke(obj, args);
+                } catch (Exception e) {
+                    throw e;
                 }
-            };
+            }
+
         }
 
     }


--
To view, visit http://gerrit.ovirt.org/12971
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I45867ee8aea7a69ab9025a2ab2301d7cb9d74663
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Michael Kublin <mkub...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to