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 2013/12/12 20:56:30 UTC

svn commit: r1550506 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws: ./ registry/ server/

Author: degenaro
Date: Thu Dec 12 19:56:29 2013
New Revision: 1550506

URL: http://svn.apache.org/r1550506
Log:
UIMA-3052 DUCC webserver (WS) improved Services page performance by caching services data each SM publication interval

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java Thu Dec 12 19:56:29 2013
@@ -25,6 +25,8 @@ import java.util.TreeMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
 import org.apache.uima.ducc.common.NodeIdentity;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.IDuccProcess;
@@ -36,7 +38,9 @@ import org.apache.uima.ducc.ws.registry.
 import org.apache.uima.ducc.ws.registry.ServicesRegistryMapPayload;
 
 public class DuccDataHelper {
-
+	
+	private static DuccLogger duccLogger = DuccLoggerComponents.getWsLogger(DuccDataHelper.class.getName());
+	
 	private static DuccDataHelper duccDataHelper = new DuccDataHelper();
 	
 	public static DuccDataHelper getInstance() {
@@ -69,8 +73,11 @@ public class DuccDataHelper {
 	}
 	
 	private String getServiceId(DuccId serviceId) {
+		String methodName = "getServiceId";
+		DuccId jobid = null;
+		duccLogger.trace(methodName, jobid, "enter");
 		String retVal = null;
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		ServicesRegistryMap map = servicesRegistry.getMap();
 		for(Integer key : map.getDescendingKeySet()) {
 			ServicesRegistryMapPayload payload = map.get(key);
@@ -85,10 +92,14 @@ public class DuccDataHelper {
 				}
 			}
 		}
+		duccLogger.trace(methodName, jobid, "exit");
 		return retVal;
 	}
 	
 	public TreeMap<String,ArrayList<String>> getServiceToServicesUsageMap() {
+		String methodName = "getServiceToServicesUsageMap";
+		DuccId jobid = null;
+		duccLogger.trace(methodName, jobid, "enter");
 		TreeMap<String,ArrayList<String>> map = new TreeMap<String,ArrayList<String>>();
 		DuccData duccData = DuccData.getInstance();
 		ConcurrentSkipListMap<JobInfo, JobInfo> jobs = duccData.getSortedServices();
@@ -123,6 +134,7 @@ public class DuccDataHelper {
 				}
 			}
 		}
+		duccLogger.trace(methodName, jobid, "exit");
 		return map;
 	}
 	

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java Thu Dec 12 19:56:29 2013
@@ -36,6 +36,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.RmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.SmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.common.DuccWorkMap;
+import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 import org.apache.uima.ducc.ws.server.DuccListeners;
 import org.apache.uima.ducc.ws.server.DuccWebServer;
 import org.apache.uima.ducc.ws.utils.DatedNodeMetricsUpdateDuccEvent;
@@ -157,6 +158,7 @@ implements IWebServer {
 		duccLogger.trace(methodName, jobid, duccMsg.fetch("enter"));
 		duccLogger.debug(methodName, jobid, duccMsg.fetchLabel("received")+"SmStateDuccEvent");
 		DuccDaemonsData.getInstance().put(duccEvent);
+		ServicesRegistry.getInstance().update();
 		duccLogger.trace(methodName, jobid, duccMsg.fetch("exit"));
 	}
 	

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java Thu Dec 12 19:56:29 2013
@@ -21,21 +21,52 @@ package org.apache.uima.ducc.ws.registry
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Properties;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.uima.ducc.common.persistence.services.IStateServices;
 import org.apache.uima.ducc.common.persistence.services.StateServices;
 import org.apache.uima.ducc.common.persistence.services.StateServicesDirectory;
 import org.apache.uima.ducc.common.persistence.services.StateServicesSet;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.springframework.util.StringUtils;
 
 public class ServicesRegistry {
 	
-	public ServicesRegistry() {
+	private static DuccLogger logger = DuccLoggerComponents.getWsLogger(ServicesRegistry.class.getName());
+	
+	private static ServicesRegistry instance = new ServicesRegistry();
+
+	private ServicesRegistryMap map = new ServicesRegistryMap();
+	
+	private AtomicBoolean inProgress = new AtomicBoolean(false);
+	
+	public static ServicesRegistry getInstance() {
+		return instance;
+	}
+	
+	private ServicesRegistry() {
 		refreshCache();
 	}
 	
-	private ServicesRegistryMap map = new ServicesRegistryMap();
+	public void update() {
+		String location = "update";
+		DuccId jobid = null;
+		if(inProgress.compareAndSet(false, true)) {
+			try {
+				refreshCache();
+				logger.debug(location, jobid, "size:"+map.size());
+			}		
+			catch(Exception e) {
+				logger.error(location, jobid, e);
+			}
+		}
+		else {
+			logger.warn(location, jobid, "skipping: already in progress...");
+		}
+		inProgress.set(false);
+	}
 	
 	public void refreshCache() {
 		try {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Thu Dec 12 19:56:29 2013
@@ -1760,7 +1760,7 @@ public class DuccHandler extends DuccAbs
 		
 		try {
 			String name = request.getParameter("name");
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 			Properties properties;
 			properties = payload.meta;
@@ -1820,7 +1820,7 @@ public class DuccHandler extends DuccAbs
 		try {
 			String name = request.getParameter("name");
 			duccLogger.debug(methodName, null, name);
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 			Properties properties;
 			properties = payload.meta;
@@ -2119,7 +2119,7 @@ public class DuccHandler extends DuccAbs
 		
 		try {
 			String name = request.getParameter("name");
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 			Properties properties;
 			properties = payload.meta;
@@ -2176,7 +2176,7 @@ public class DuccHandler extends DuccAbs
 		StringBuffer sb = new StringBuffer();
 		try {
 			String name = request.getParameter("name");
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 			String hint = getLoginRefreshHint(request, response);
 			String enable_or_disable = getEnabledOrDisabled(request, response);;
@@ -2339,7 +2339,7 @@ public class DuccHandler extends DuccAbs
 		sb.append("<tr>");
 		
 		String name = request.getParameter("name");
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 		Properties properties;
 		properties = payload.meta;
@@ -3644,7 +3644,7 @@ public class DuccHandler extends DuccAbs
 			String text;
 			String result;
 			name = value.trim();
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			ServicesRegistryMapPayload payload = servicesRegistry.findService(name);
 			if(payload != null) {
 				Properties properties = payload.meta;
@@ -3718,7 +3718,7 @@ public class DuccHandler extends DuccAbs
 			String text;
 			String result;
 			String id = value.trim();
-			ServicesRegistry servicesRegistry = new ServicesRegistry();
+			ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 			String resourceOwnerUserId = servicesRegistry.findServiceUser(id);
 			if(resourceOwnerUserId != null) {
 				if(isUserAuthorized(request,resourceOwnerUserId)) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Thu Dec 12 19:56:29 2013
@@ -393,7 +393,7 @@ public class DuccHandlerClassic extends 
 		duccLogger.trace(methodName, jobid, messages.fetch("enter"));
 		StringBuffer sb = new StringBuffer();
 		
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		
 		long now = System.currentTimeMillis();
 		
@@ -835,8 +835,7 @@ public class DuccHandlerClassic extends 
 		
 		int maxRecords = getServicesMax(request);
 		ArrayList<String> users = getServicesUsers(request);
-		
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		ServicesRegistryMap map = servicesRegistry.getMap();
 		if(!map.isEmpty()) {
 			int counter = 0;

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1550506&r1=1550505&r2=1550506&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Thu Dec 12 19:56:29 2013
@@ -437,7 +437,7 @@ public class DuccHandlerJsonFormat exten
 		JsonObject jsonResponse = new JsonObject();
 		JsonArray data = new JsonArray();
 		
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		
 		long now = System.currentTimeMillis();
 		
@@ -969,7 +969,7 @@ public class DuccHandlerJsonFormat exten
 		int maxRecords = getServicesMax(request);
 		ArrayList<String> users = getServicesUsers(request);
 		
-		ServicesRegistry servicesRegistry = new ServicesRegistry();
+		ServicesRegistry servicesRegistry = ServicesRegistry.getInstance();
 		
 		IStateServices iss = StateServices.getInstance();
 		StateServicesDirectory ssd = iss.getStateServicesDirectory();