You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2016/10/19 20:38:59 UTC

svn commit: r1765713 - in /uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent: NodeAgent.java config/AgentConfiguration.java event/AgentEventListener.java processors/DefaultNodeInventoryProcessor.java

Author: cwiklik
Date: Wed Oct 19 20:38:58 2016
New Revision: 1765713

URL: http://svn.apache.org/viewvc?rev=1765713&view=rev
Log:
UIMA-5060 Force inventory update if OR sequence is not what is expected. Also fixed a bug preventing last OR sequence from being published

Modified:
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/AgentEventListener.java
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/DefaultNodeInventoryProcessor.java

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java?rev=1765713&r1=1765712&r2=1765713&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java Wed Oct 19 20:38:58 2016
@@ -187,6 +187,9 @@ public class NodeAgent extends AbstractD
 	  }
 	  return lastORSequence;
   }
+  public AgentEventListener getEventListener() {
+	  return eventListener;
+  }
   public void setAgentEventListener(AgentEventListener listener) {
 	  eventListener = listener;
   }

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java?rev=1765713&r1=1765712&r2=1765713&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java Wed Oct 19 20:38:58 2016
@@ -422,6 +422,8 @@ public class AgentConfiguration {
       agentTransport.configureJMSTransport(logger,common.agentRequestEndpoint, camelContext);
       AgentEventListener delegateListener = agentDelegateListener(agent);
 
+      agent.setAgentEventListener(delegateListener);
+      
       if (common.managedProcessStateUpdateEndpointType != null
               && common.managedProcessStateUpdateEndpointType.equalsIgnoreCase("socket")) {
         String agentSocketParams = "";

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/AgentEventListener.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/AgentEventListener.java?rev=1765713&r1=1765712&r2=1765713&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/AgentEventListener.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/AgentEventListener.java Wed Oct 19 20:38:58 2016
@@ -54,6 +54,7 @@ public class AgentEventListener implemen
 	// This cleanup will happen once right after processing of the first OR publication.
 	private boolean cleanupPhase = true;  
 	private AtomicLong lastSequence = new AtomicLong();
+	private volatile boolean forceInventoryUpdateDueToSequence = false;
 	
 	private NodeAgent agent;
 	public AgentEventListener(NodeAgent agent, ProcessLifecycleController lifecycleController) {
@@ -81,6 +82,12 @@ public class AgentEventListener implemen
   	    }
   	    logger.info("reportIncomingStateForThisNode",null,sb.toString());
 	}
+	public boolean forceInvotoryUpdate() {
+		return forceInventoryUpdateDueToSequence;
+	}
+	public void resetForceInventoryUpdateFlag() {
+		forceInventoryUpdateDueToSequence = false;
+	}
 	/**
 	 * This method is called by Camel when PM sends DUCC state to agent's queue. It 
 	 * takes responsibility of reconciling processes on this node. 
@@ -109,7 +116,8 @@ public class AgentEventListener implemen
 			    } else {
 			    	// Out of band message. Expected message with sequence larger than a previous message
 			    	logger.warn("reportIncomingStateForThisNode",null,"Received Out of Band Message. Expected Sequence Greater Than "+lastSequence+" Received "+sequence+" Instead");
-			  	    return;
+			    	forceInventoryUpdateDueToSequence = true;
+			    	return;
 			    } 
 
 			  //  typically lifecycleController is null and the agent assumes the role. For jUnit testing though, 

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/DefaultNodeInventoryProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/DefaultNodeInventoryProcessor.java?rev=1765713&r1=1765712&r2=1765713&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/DefaultNodeInventoryProcessor.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/DefaultNodeInventoryProcessor.java Wed Oct 19 20:38:58 2016
@@ -81,6 +81,10 @@ public class DefaultNodeInventoryProcess
 		// (ducc.agent.node.inventory.publish.rate.skip)
 		// configured in ducc.properties.
 		if (previousInventory != null) {
+			if ( agent.getEventListener().forceInvotoryUpdate()) {
+				inventoryChanged = true;
+				agent.getEventListener().resetForceInventoryUpdateFlag();
+			}
 			if (inventory.size() != previousInventory.size()) {
 				inventoryChanged = true;
 			} else {