You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/03/31 14:08:04 UTC

svn commit: r1670312 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd: fsm/wi/ActionEnd.java fsm/wi/ActionGet.java log/LoggerHelper.java wi/IWorkItem.java wi/WiTracker.java wi/WorkItem.java

Author: degenaro
Date: Tue Mar 31 12:08:03 2015
New Revision: 1670312

URL: http://svn.apache.org/r1670312
Log:
UIMA-4318 DUCC Web Server (WS) reduce JD storage use

Track work items by seqNo, not RemoteWorkerThread.

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/LoggerHelper.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WiTracker.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java Tue Mar 31 12:08:03 2015
@@ -40,9 +40,7 @@ import org.apache.uima.ducc.container.jd
 import org.apache.uima.ducc.container.jd.log.ErrorLogger;
 import org.apache.uima.ducc.container.jd.log.LoggerHelper;
 import org.apache.uima.ducc.container.jd.mh.RemoteWorkerProcess;
-import org.apache.uima.ducc.container.jd.mh.RemoteWorkerThread;
 import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerProcess;
-import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerThread;
 import org.apache.uima.ducc.container.jd.timeout.TimeoutManager;
 import org.apache.uima.ducc.container.jd.user.error.classload.ProxyUserErrorException;
 import org.apache.uima.ducc.container.jd.user.error.classload.ProxyUserErrorStringify;
@@ -269,7 +267,6 @@ public class ActionEnd extends Action im
 			if(actionData != null) {
 				IWorkItem wi = actionData.getWorkItem();
 				IMetaCasTransaction trans = actionData.getMetaCasTransaction();
-				IRemoteWorkerThread rwt = new RemoteWorkerThread(trans);
 				IRemoteWorkerProcess rwp = new RemoteWorkerProcess(trans);
 				IMetaCas metaCas = wi.getMetaCas();
 				JobDriver jd = JobDriver.getInstance();
@@ -281,7 +278,7 @@ public class ActionEnd extends Action im
 				IProcessStatistics pStats = jdh.getProcessStatistics(rwp);
 				//
 				if(metaCas != null) {
-					WiTracker.getInstance().unassign(rwt);
+					WiTracker.getInstance().unassign(wi);
 					//
 					TimeoutManager toMgr = TimeoutManager.getInstance();
 					toMgr.receivedAck(actionData);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java Tue Mar 31 12:08:03 2015
@@ -115,7 +115,7 @@ public class ActionGet implements IActio
 				IEvent event = null;
 				//
 				if(metaCas != null) {
-					WiTracker.getInstance().assign(rwt, wi);
+					WiTracker.getInstance().assign(wi, rwt);
 					int seqNo = metaCasHelper.getSystemKey();
 					String wiId = metaCas.getUserKey();
 					String node = rwt.getNodeAddress();

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/LoggerHelper.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/LoggerHelper.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/LoggerHelper.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/log/LoggerHelper.java Tue Mar 31 12:08:03 2015
@@ -139,12 +139,12 @@ public class LoggerHelper {
 		return mb;
 	}
 	
-	public static MessageBuffer getMessageBuffer(IRemoteWorkerThread rwt, IWorkItem wi) {
+	public static MessageBuffer getMessageBuffer(IWorkItem wi, IRemoteWorkerThread rwt) {
 		String location = "getMessageBuffer";
 		MessageBuffer mb = new MessageBuffer();
 		try {
 			mb.append(Standardize.Label.seqNo.get()+getSeqNo(wi));
-			mb.append(Standardize.Label.id.get()+getSeqNo(wi));
+			mb.append(Standardize.Label.id.get()+getId(wi));
 			mb.append(Standardize.Label.remote.get()+rwt.toString());
 		}
 		catch(Exception e) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java Tue Mar 31 12:08:03 2015
@@ -21,7 +21,7 @@ package org.apache.uima.ducc.container.j
 import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
 import org.apache.uima.ducc.container.net.iface.IMetaCas;
 
-public interface IWorkItem {
+public interface IWorkItem extends Comparable<Object> {
 	
 	public void setMetaCas(IMetaCas value);
 	public IMetaCas getMetaCas();

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WiTracker.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WiTracker.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WiTracker.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WiTracker.java Tue Mar 31 12:08:03 2015
@@ -31,8 +31,8 @@ import org.apache.uima.ducc.container.jd
 
 public class WiTracker {
 
-	private ConcurrentHashMap<IRemoteWorkerThread, IWorkItem> map = new ConcurrentHashMap<IRemoteWorkerThread, IWorkItem>();
-
+	private ConcurrentHashMap<IWorkItem, IRemoteWorkerThread> map = new ConcurrentHashMap<IWorkItem, IRemoteWorkerThread>();
+	
 	private static Logger logger = Logger.getLogger(WiTracker.class, IComponent.Id.JD.name());
 	
 	private static WiTracker instance = new WiTracker();
@@ -41,10 +41,10 @@ public class WiTracker {
 		return instance;
 	}
 	
-	public void assign(IRemoteWorkerThread rwt, IWorkItem wi) {
+	public void assign(IWorkItem wi, IRemoteWorkerThread rwt) {
 		String location = "assign";
 		try {
-			map.put(rwt, wi);
+			map.put(wi, rwt);
 			report();
 		}
 		catch(Exception e) {
@@ -52,45 +52,22 @@ public class WiTracker {
 		}	
 	}
 	
-	public void unassign(IRemoteWorkerThread rwt) {
-		String location = "unassign";
-		try {
-			map.remove(rwt);
+	public void unassign(IWorkItem wi) {
+		if(wi != null) {
+			map.remove(wi);
 			report();
 		}
-		catch(Exception e) {
-			logger.error(location, ILogger.null_id, e);
-		}
 	}
-	
-	private IRemoteWorkerThread find(IWorkItem wi) {
-		IRemoteWorkerThread rwt = null;
-		for(Entry<IRemoteWorkerThread, IWorkItem> entry : map.entrySet()) {
-			if(wi.getSeqNo() == entry.getValue().getSeqNo()) {
-				rwt = entry.getKey();
-				break;
-			}
-		}
-		return rwt;
-	}
-	
-	public void unassign(IWorkItem value) {
-		IRemoteWorkerThread rwt = find(value);
-		if(rwt != null) {
-			map.remove(rwt);
-			report();
-		}
-	}
-	
+
 	private void report() {
 		String location = "report";
 		MessageBuffer mb = new MessageBuffer();
 		mb.append(Standardize.Label.size.get()+map.size());
 		logger.trace(location, ILogger.null_id, mb.toString());
-		for(Entry<IRemoteWorkerThread, IWorkItem> entry : map.entrySet()) {
-			IRemoteWorkerThread rwt = entry.getKey();
-			IWorkItem wi = entry.getValue();
-			MessageBuffer mb1 = LoggerHelper.getMessageBuffer(rwt, wi);
+		for(Entry<IWorkItem, IRemoteWorkerThread> entry : map.entrySet()) {
+			IWorkItem wi = entry.getKey();
+			IRemoteWorkerThread rwt = entry.getValue();
+			MessageBuffer mb1 = LoggerHelper.getMessageBuffer(wi, rwt);
 			logger.trace(location, ILogger.null_id, mb1.toString());
 		}
 	}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java?rev=1670312&r1=1670311&r2=1670312&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java Tue Mar 31 12:08:03 2015
@@ -21,11 +21,16 @@ package org.apache.uima.ducc.container.j
 import org.apache.uima.ducc.container.common.Assertion;
 import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
 import org.apache.uima.ducc.container.common.fsm.iface.IState;
+import org.apache.uima.ducc.container.common.logger.IComponent;
+import org.apache.uima.ducc.container.common.logger.ILogger;
+import org.apache.uima.ducc.container.common.logger.Logger;
 import org.apache.uima.ducc.container.jd.fsm.wi.WiFsm;
 import org.apache.uima.ducc.container.net.iface.IMetaCas;
 
 public class WorkItem implements IWorkItem {
 
+	private static Logger logger = Logger.getLogger(WorkItem.class, IComponent.Id.JD.name());
+	
 	private IMetaCas metaCas = null;
 	private IFsm fsm = null;
 	
@@ -185,4 +190,54 @@ public class WorkItem implements IWorkIt
 		return retVal;
 	}
 
+	// Comparable
+	
+	@Override
+	public int compareTo(Object o) {
+		String location = "compareTo";
+		int retVal = 0;
+		try {
+			if(o != null) {
+				if(o instanceof IWorkItem) {
+					IWorkItem that = (IWorkItem) o;
+					Integer iThis = new Integer(this.getSeqNo());
+					Integer iThat = new Integer(that.getSeqNo());
+					retVal = iThis.compareTo(iThat);
+				}
+			}
+		}
+		catch(Exception e) {
+			logger.error(location, ILogger.null_id, e);
+		}
+		return retVal;
+	}
+	
+	@Override
+	public int hashCode() {
+		return this.getSeqNo();
+	}
+	
+	
+	@Override
+	public boolean equals(Object obj) {
+		String location = "equals";
+		boolean retVal = false;
+		try {
+			if(obj != null) {
+				if(this == obj) {
+					retVal = true;
+				}
+				else {
+					IWorkItem that = (IWorkItem) obj;
+					if(this.compareTo(that) == 0) {
+						retVal = true;
+					}
+				}
+			}
+		}
+		catch(Exception e) {
+			logger.error(location, ILogger.null_id, e);
+		}
+		return retVal;
+	}
 }