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();