[teiid-commits] teiid SVN: r3702 - trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Nov 28 13:50:08 EST 2011


Author: shawkins
Date: 2011-11-28 13:50:08 -0500 (Mon, 28 Nov 2011)
New Revision: 3702

Modified:
   trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsObjectReplicator.java
   trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsOutputStream.java
Log:
TEIID-1673 update to any cast logic and removing unnecessary remote calls

Modified: trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsObjectReplicator.java
===================================================================
--- trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsObjectReplicator.java	2011-11-28 18:49:16 UTC (rev 3701)
+++ trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsObjectReplicator.java	2011-11-28 18:50:08 UTC (rev 3702)
@@ -117,8 +117,9 @@
 		        if(log.isTraceEnabled())
 		            log.trace("[sender=" + req.getSrc() + "], method_call: " + method_call); //$NON-NLS-1$ //$NON-NLS-2$
 
-		        if(method_lookup == null)
-		            throw new Exception("MethodCall uses ID=" + method_call.getId() + ", but method_lookup has not been set"); //$NON-NLS-1$ //$NON-NLS-2$
+		        if (method_call.getId() >= methodList.size() - 5 && req.getSrc().equals(local_addr)) {
+		        	return null;
+		        }
 
 		        if (method_call.getId() >= methodList.size() - 3) {
 		        	Serializable address = new AddressWrapper(req.getSrc());
@@ -292,6 +293,9 @@
 		        List<Address> dests = null;
 		        if (annotation.remoteOnly()) {
 		        	dests = getRemoteMembersCopy();
+		        	if (dests.isEmpty()) {
+		        		return null;
+		        	}
 		        }
 		        RspList<Object> responses = disp.callRemoteMethods(dests, call, new RequestOptions().setMode(annotation.asynch()?ResponseMode.GET_NONE:ResponseMode.GET_ALL).setTimeout(annotation.timeout()).setAnycasting(dests != null));
 		        if (annotation.asynch()) {
@@ -346,18 +350,19 @@
 			} catch (InvocationTargetException e) {
 				throw e.getCause();
 			}
-			List<Address> dests = getRemoteMembersCopy();
 			ReplicatedObject ro = (ReplicatedObject)object;
 			Serializable stateId = (Serializable)args[0];
 			if (annotation.replicateState() == ReplicationMode.PUSH) {
-				LogManager.logDetail(LogConstants.CTX_RUNTIME, object, "replicating state", stateId); //$NON-NLS-1$
-				JGroupsOutputStream oStream = new JGroupsOutputStream(disp, dests, stateId, (short)(methodMap.size() - 3), true);
-				try {
-					ro.getState(stateId, oStream);
-				} finally {
-					oStream.close();
+				if (!remoteMembers.isEmpty()) {
+					LogManager.logDetail(LogConstants.CTX_RUNTIME, object, "replicating state", stateId); //$NON-NLS-1$
+					JGroupsOutputStream oStream = new JGroupsOutputStream(disp, null, stateId, (short)(methodMap.size() - 3), true);
+					try {
+						ro.getState(stateId, oStream);
+					} finally {
+						oStream.close();
+					}
+					LogManager.logTrace(LogConstants.CTX_RUNTIME, object, "sent state", stateId); //$NON-NLS-1$
 				}
-				LogManager.logTrace(LogConstants.CTX_RUNTIME, object, "sent state", stateId); //$NON-NLS-1$
 			    return result;
 			}
 			if (result != null) {

Modified: trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsOutputStream.java
===================================================================
--- trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsOutputStream.java	2011-11-28 18:49:16 UTC (rev 3701)
+++ trunk/cache-jbosscache/src/main/java/org/teiid/replication/jboss/JGroupsOutputStream.java	2011-11-28 18:50:08 UTC (rev 3702)
@@ -55,7 +55,7 @@
         this.methodOffset = methodOffset;
         if (sendCreate) {
 	        try {
-	        	disp.callRemoteMethods(this.dests, new MethodCall(methodOffset, new Object[] {stateId}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(true));
+	        	disp.callRemoteMethods(this.dests, new MethodCall(methodOffset, new Object[] {stateId}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(dests != null));
 	        } catch(Exception e) {
 	        	throw new IOException(e);
 	        }
@@ -68,7 +68,7 @@
         }
         flush();
         try {
-        	disp.callRemoteMethods(dests, new MethodCall((short)(methodOffset + 2), new Object[] {stateId}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(true));
+        	disp.callRemoteMethods(dests, new MethodCall((short)(methodOffset + 2), new Object[] {stateId}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(dests != null));
         } catch(Exception e) {
         }
         closed=true;
@@ -80,7 +80,7 @@
             if(index == 0) {
                 return;
             }
-        	disp.callRemoteMethods(dests, new MethodCall((short)(methodOffset + 1), new Object[] {stateId, Arrays.copyOf(buffer, index)}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(true));
+        	disp.callRemoteMethods(dests, new MethodCall((short)(methodOffset + 1), new Object[] {stateId, Arrays.copyOf(buffer, index)}), new RequestOptions(ResponseMode.GET_NONE, 0).setAnycasting(dests != null));
             index=0;
         } catch(Exception e) {
         	throw new IOException(e);



More information about the teiid-commits mailing list