Author: challngr Date: Tue Jun 25 20:45:12 2013 New Revision: 1496633 URL: http://svn.apache.org/r1496633 Log: UIMA-3011 Refactor default UIMA-AS pinger to CLI, and add service_ping_arguments support.
Added: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java - copied, changed from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ServiceStatistics.java - copied, changed from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsPing.java - copied, changed from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/UimaAsPing.java uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsServiceMonitor.java - copied, changed from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/UimaAsServiceMonitor.java Removed: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/UimaAsServiceMonitor.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/UimaAsPing.java Modified: uima/sandbox/uima-ducc/trunk/javadoc.xml uima/sandbox/uima-ducc/trunk/pom.xml uima/sandbox/uima-ducc/trunk/uima-ducc-examples/pom.xml uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/service/CustomPing.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/IServiceMeta.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServicePingMain.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/SmConstants.java uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java Modified: uima/sandbox/uima-ducc/trunk/javadoc.xml URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/javadoc.xml?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/javadoc.xml (original) +++ uima/sandbox/uima-ducc/trunk/javadoc.xml Tue Jun 25 20:45:12 2013 @@ -48,13 +48,13 @@ </fileset> <fileset dir="uima-ducc-common/src/main/java"> - <include name="**/AServicePing.java" /> - <include name="**/ServiceStatistics.java" /> + <include name="**/IServiceStatistics.java" /> <include name="**/ADuccId.java" /> <include name="**/IDuccId.java" /> </fileset> <fileset dir="uima-ducc-cli/src/main/java"> + <include name="**/AServicePing.java" /> <include name="**/DuccJobSubmit.java" /> <include name="**/DuccJobCancel.java" /> <include name="**/DuccReservationCancel.java" /> Modified: uima/sandbox/uima-ducc/trunk/pom.xml URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/pom.xml?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/pom.xml (original) +++ uima/sandbox/uima-ducc/trunk/pom.xml Tue Jun 25 20:45:12 2013 @@ -160,21 +160,21 @@ <subpackages>org.apache.uima</subpackages> <excludePackageNames> - org.apache.uima.ducc.cli.*:org.apache.uima.ducc.common.*:org.apache.uima.ducc.transport.* + org.apache.uima.ducc.cli.*:org.apache.uima.ducc.api.*:org.apache.uima.ducc.common.*:org.apache.uima.ducc.transport.* </excludePackageNames> <!-- add a few classes in impl packages that are directly used by user code --> <additionalparam> - ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java - ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java + ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/IServiceStatistics.java ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/id/ADuccId.java ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/id/IDuccId.java ${basedir}/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java ${basedir}/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java + ${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java ${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobCancel.java ${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java ${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationCancel.java Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java (from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java) URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java&r1=1496118&r2=1496633&rev=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/AServicePing.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java Tue Jun 25 20:45:12 2013 @@ -16,16 +16,25 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.uima.ducc.common; +package org.apache.uima.ducc.cli; + +import org.apache.uima.ducc.common.IServiceStatistics; + +/** + * Abstraction for service pinger. + */ public abstract class AServicePing { /** * Called by the ping driver, to pass in useful things the pinger may want. + * @param arguments This is passed in from the service specification's + * service_ping_arguments string. + * * @param endpoint This is the name of the service endpoint, as passed in * at service registration. */ - public abstract void init(String endpoint) throws Exception; + public abstract void init(String arguments, String endpoint) throws Exception; /** * Stop is called by the ping wrapper when it is being killed. Implementors may optionally @@ -38,6 +47,6 @@ public abstract class AServicePing * @return This object contains the informaton the service manager and web server require * for correct management and display of the service. */ - public abstract ServiceStatistics getStatistics(); + public abstract IServiceStatistics getStatistics(); } Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ServiceStatistics.java (from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java) URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ServiceStatistics.java?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ServiceStatistics.java&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java&r1=1496118&r2=1496633&rev=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ServiceStatistics.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/ServiceStatistics.java Tue Jun 25 20:45:12 2013 @@ -1,13 +1,15 @@ -package org.apache.uima.ducc.common; +package org.apache.uima.ducc.cli; + +import org.apache.uima.ducc.common.IServiceStatistics; + -import java.io.Serializable; /** * The ServiceStatics class is used to return service health, availability, and monitoring statistics * to the Service Manager. */ public class ServiceStatistics - implements Serializable + implements IServiceStatistics { private static final long serialVersionUID = 1L; private boolean alive = false; Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsPing.java (from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/UimaAsPing.java) URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsPing.java?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsPing.java&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/UimaAsPing.java&r1=1496118&r2=1496633&rev=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/UimaAsPing.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsPing.java Tue Jun 25 20:45:12 2013 @@ -1,5 +1,8 @@ -package org.apache.uima.ducc.sm; +package org.apache.uima.ducc.cli; +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; @@ -8,19 +11,18 @@ import java.util.Map; import org.apache.uima.UIMAFramework; import org.apache.uima.aae.client.UimaAsynchronousEngine; import org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_impl; -import org.apache.uima.ducc.common.AServicePing; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.common.IServiceStatistics; import org.apache.uima.ducc.common.TcpStreamHandler; -import org.apache.uima.ducc.common.UimaAsServiceMonitor; import org.apache.uima.ducc.common.utils.DuccLogger; -import org.apache.uima.ducc.common.utils.SystemPropertyResolver; +import org.apache.uima.ducc.common.utils.DuccProperties; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; +// 'q_thresh=nn,window=mm,broker_jmx=1100,meta_timeout=10000' public class UimaAsPing extends AServicePing { - static final int QUEUE_SIZE_WINDOW = 3; + int window = 3; int queue_threshold = 0; String ep; @@ -35,20 +37,20 @@ public class UimaAsPing UimaAsServiceMonitor monitor; DuccLogger logger = null; - int[] queueSizeWindow = new int[QUEUE_SIZE_WINDOW]; + int[] queueSizeWindow; int queueCursor = 0; - UimaAsPing() + public UimaAsPing() { this.logger = null; } - UimaAsPing(DuccLogger logger) + public UimaAsPing(DuccLogger logger) { this.logger = logger; } - public void init(String ep) + public void init(String args, String ep) throws Exception { this.ep = ep; @@ -72,21 +74,40 @@ public class UimaAsPing broker_host = url.getHost(); // not needed here fyi broker_port = url.getPort(); - - String to = System.getProperty("ducc.sm.meta.ping.timeout"); - meta_timeout = Integer.parseInt(to); - - - broker_jmx_port = SystemPropertyResolver.getIntProperty("ducc.sm.meta.jmx.port", 1099); - this.monitor = new UimaAsServiceMonitor(endpoint, broker_host, broker_jmx_port); - - queue_threshold = SystemPropertyResolver.getIntProperty("ducc.sm.max.queue.depth", 500); - + //UIMAFramework.getLogger(BaseUIMAAsynchronousEngineCommon_impl.class).setLevel(Level.OFF); //UIMAFramework.getLogger(BaseUIMAAsynchronousEngine_impl.class).setLevel(Level.OFF); // there are a couple junky messages that slip by the above configurations. turn the whole danged thing off. UIMAFramework.getLogger().setLevel(Level.OFF); + if ( args == null ) { + meta_timeout = 5000; + broker_jmx_port = 1099; + queue_threshold = 0; + window = 3; + } else { + // 'q_thresh=nn,window=mm,broker_jmx_port=1100,meta_timeout=10000' + // turn the argument string into properties + String[] as = args.split(","); + StringWriter sw = new StringWriter(); + for ( String s : as ) sw.write(s + "\n"); + StringReader sr = new StringReader(sw.toString()); + DuccProperties props = new DuccProperties(); + try { + props.load(sr); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + meta_timeout = props.getIntProperty("meta_timeout", 5000); + broker_jmx_port = props.getIntProperty("broker_jmx_port", 1099); + queue_threshold = props.getIntProperty("queue_threshold", 0); + window = props.getIntProperty("window", 3); + } + queueSizeWindow = new int[window]; + logger.debug("<ctr>", null, "INIT: meta_timeout", meta_timeout, "broker_jmx_port", broker_jmx_port, "queue_threshold", queue_threshold, "window", window); + + this.monitor = new UimaAsServiceMonitor(endpoint, broker_host, broker_jmx_port); } public void stop() @@ -103,7 +124,7 @@ public class UimaAsPing } } - void evaluatePing(UimaAsServiceMonitor mon, ServiceStatistics stats) + void evaluatePing(UimaAsServiceMonitor mon, IServiceStatistics stats) { String methodName = "evaluatePing"; try { @@ -112,14 +133,14 @@ public class UimaAsPing if ( queue_threshold > 0 ) { // only do this if a threshold is set // if the last 'n' q depths are > threshold, mark the service unhealthy // primitive, but maybe an OK first guess - queueSizeWindow[queueCursor++ % QUEUE_SIZE_WINDOW] = (int)monitor.getQueueSize(); + queueSizeWindow[queueCursor++ % window] = (int)monitor.getQueueSize(); int sum = 0; - for ( int i = 0; i < QUEUE_SIZE_WINDOW; i++ ) { + for ( int i = 0; i < window; i++ ) { sum += queueSizeWindow[i]; } - sum = sum / QUEUE_SIZE_WINDOW; + sum = sum / window; stats.setHealthy( sum < queue_threshold ? true : false); - // logger.debug(methodName, null, "EVAL: Q depth", monitor.getQueueSize(), "window", sum, "health", stats.isHealthy()); + logger.debug(methodName, null, "EVAL: Q depth", monitor.getQueueSize(), "window", sum, "health", stats.isHealthy()); } else { stats.setHealthy(true); } @@ -133,10 +154,10 @@ public class UimaAsPing } } - public ServiceStatistics getStatistics() + public IServiceStatistics getStatistics() { String methodName = "getStatistics"; - ServiceStatistics statistics = new ServiceStatistics(false, false, "<NA>"); + IServiceStatistics statistics = new ServiceStatistics(false, false, "<NA>"); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); Copied: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsServiceMonitor.java (from r1496118, uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/UimaAsServiceMonitor.java) URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsServiceMonitor.java?p2=uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsServiceMonitor.java&p1=uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/UimaAsServiceMonitor.java&r1=1496118&r2=1496633&rev=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/UimaAsServiceMonitor.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/UimaAsServiceMonitor.java Tue Jun 25 20:45:12 2013 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.uima.ducc.common; +package org.apache.uima.ducc.cli; import java.io.IOException; import java.text.DecimalFormat; @@ -31,9 +31,9 @@ import javax.management.remote.JMXServic import org.apache.activemq.broker.jmx.BrokerViewMBean; import org.apache.activemq.broker.jmx.QueueViewMBean; +import org.apache.uima.ducc.common.IServiceStatistics; public class UimaAsServiceMonitor - extends AServicePing { private String qname; @@ -42,7 +42,7 @@ public class UimaAsServiceMonitor private JMXConnector jmxc; BrokerViewMBean brokerMBean; private QueueViewMBean monitoredQueue; - private ServiceStatistics qstats; + private IServiceStatistics qstats; double enqueueTime ; long consumerCount ; @@ -160,7 +160,7 @@ public class UimaAsServiceMonitor } } - public ServiceStatistics getStatistics() + public IServiceStatistics getStatistics() { try { collect(); @@ -243,7 +243,7 @@ public class UimaAsServiceMonitor while ( true ) { - ServiceStatistics qs = null; + IServiceStatistics qs = null; try { qs = m.getStatistics(); } catch (Throwable t) { Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/pom.xml URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/pom.xml?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/pom.xml (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/pom.xml Tue Jun 25 20:45:12 2013 @@ -38,6 +38,12 @@ <version>${ducc.version}</version> </dependency> + <dependency> + <groupId>org.apache.uima</groupId> + <artifactId>uima-ducc-cli</artifactId> + <version>${ducc.version}</version> + </dependency> + </dependencies> <!-- build> Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/service/CustomPing.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/service/CustomPing.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/service/CustomPing.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/service/CustomPing.java Tue Jun 25 20:45:12 2013 @@ -4,8 +4,8 @@ import java.io.DataInputStream; import java.io.InputStream; import java.net.Socket; -import org.apache.uima.ducc.common.AServicePing; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.cli.AServicePing; +import org.apache.uima.ducc.cli.ServiceStatistics; /** * This is designed for the simple sleeper "service" that does nothing other than @@ -18,7 +18,7 @@ public class CustomPing { String host; String port; - public void init(String endpoint) + public void init(String arguments, String endpoint) throws Exception { String[] parts = endpoint.split(":"); @@ -71,7 +71,7 @@ public class CustomPing { try { CustomPing cp = new CustomPing(); - cp.init(args[0]); + cp.init(null, args[0]); for ( int i = 0; i < 10; i++ ) { ServiceStatistics stats = cp.getStatistics(); System.out.println(stats); Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/IServiceMeta.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/IServiceMeta.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/IServiceMeta.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/IServiceMeta.java Tue Jun 25 20:45:12 2013 @@ -18,13 +18,14 @@ */ package org.apache.uima.ducc.sm; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.common.IServiceStatistics; + interface IServiceMeta extends Runnable { - ServiceStatistics getServiceStatistics(); + IServiceStatistics getServiceStatistics(); public void run(); public void stop(); } Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java Tue Jun 25 20:45:12 2013 @@ -28,8 +28,9 @@ import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; -import org.apache.uima.ducc.common.AServicePing; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.cli.AServicePing; +import org.apache.uima.ducc.cli.UimaAsPing; +import org.apache.uima.ducc.common.IServiceStatistics; import org.apache.uima.ducc.common.utils.DuccLogger; import org.apache.uima.ducc.common.utils.DuccProperties; @@ -62,6 +63,7 @@ class PingDriver String[] jvm_args; String endpoint; String ping_class; + String ping_arguments; String classpath; boolean ping_ok; @@ -85,7 +87,7 @@ class PingDriver boolean internal_ping = true; // if true, use default UIMA-AS pinger in thread inside SM propert AServicePing internal_pinger = null; // pinger used if internal_ping is true - ServiceStatistics service_statistics = null; + IServiceStatistics service_statistics = null; String user; String working_directory; @@ -105,6 +107,7 @@ class PingDriver this.user = meta_props.getStringProperty("user"); String jvm_args_str = job_props.getStringProperty("service_ping_jvm_args", ""); this.ping_class = job_props.getStringProperty("service_ping_class", null); + this.ping_arguments = job_props.getStringProperty("service_ping_arguments", null); if ( (ping_class == null) || ping_class.equals(UimaAsPing.class.getName()) ) { internal_ping = true; @@ -146,7 +149,7 @@ class PingDriver this.test_mode = true; } - public ServiceStatistics getServiceStatistics() + public IServiceStatistics getServiceStatistics() { return service_statistics; } @@ -175,7 +178,7 @@ class PingDriver } - void handleStatistics(ServiceStatistics stats) + void handleStatistics(IServiceStatistics stats) { String methodName = "handleStatistics"; @@ -209,7 +212,7 @@ class PingDriver String methodName = "runAsThread"; internal_pinger = new UimaAsPing(logger); try { - internal_pinger.init(endpoint); + internal_pinger.init(ping_arguments, endpoint); } catch ( Throwable t ) { logger.warn(methodName, sset.getId(), t); sset.pingExited(); @@ -274,6 +277,11 @@ class PingDriver arglist.add("--endpoint"); arglist.add(endpoint); arglist.add("--port"); + if( ping_arguments != null ) { + arglist.add("--arguments"); + arglist.add(ping_arguments); + } + arglist.add(Integer.toString(port)); int i = 0; @@ -404,7 +412,7 @@ class PingDriver } // Try to read the response - handleStatistics((ServiceStatistics) ois.readObject()); + handleStatistics((IServiceStatistics) ois.readObject()); // Wait a bit for the next one try { Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceManagerComponent.java Tue Jun 25 20:45:12 2013 @@ -27,6 +27,7 @@ import java.util.Properties; import java.util.UUID; import org.apache.camel.CamelContext; +import org.apache.uima.ducc.cli.UimaAsPing; import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties; import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties.DaemonName; import org.apache.uima.ducc.common.component.AbstractDuccComponent; Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServicePingMain.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServicePingMain.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServicePingMain.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServicePingMain.java Tue Jun 25 20:45:12 2013 @@ -31,8 +31,9 @@ import org.apache.commons.cli.OptionBuil import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.uima.ducc.common.AServicePing; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.cli.AServicePing; +import org.apache.uima.ducc.cli.ServiceStatistics; +import org.apache.uima.ducc.common.IServiceStatistics; /** @@ -90,6 +91,14 @@ public class ServicePingMain .create () ); + options.addOption(OptionBuilder + .withLongOpt (ServicePing.Port.decode()) + .withDescription(ServicePing.Port.description()) + .withArgName (ServicePing.Port.argname()) + .hasArg (true) + .create () + ); + } static void appendStackTrace(StringBuffer s, Throwable t) @@ -126,7 +135,7 @@ public class ServicePingMain // // resolve the customMeta string inta a class if we can // - AServicePing resolve(String cl, String ep) + AServicePing resolve(String cl, String args, String ep) { print("ServicePingMain.resolve:", cl, "ep", ep); AServicePing pinger = null; @@ -134,7 +143,7 @@ public class ServicePingMain @SuppressWarnings("rawtypes") Class cls = Class.forName(cl); pinger = (AServicePing) cls.newInstance(); - pinger.init(ep); + pinger.init(args, ep); } catch (Exception e) { //print(e); // To the logs e.printStackTrace(); @@ -168,7 +177,7 @@ public class ServicePingMain CommandLineParser parser = new PosixParser(); CommandLine commandLine = null; - ServiceStatistics default_statistics = new ServiceStatistics(false, false, "<N/A>"); + IServiceStatistics default_statistics = new ServiceStatistics(false, false, "<N/A>"); try { commandLine = parser.parse(options, args); @@ -177,6 +186,7 @@ public class ServicePingMain return; } + String arguments = commandLine.getOptionValue(ServicePing.Arguments.decode()); String pingClass = commandLine.getOptionValue(ServicePing.Class.decode()); String endpoint = commandLine.getOptionValue(ServicePing.Endpoint.decode()); String port = commandLine.getOptionValue(ServicePing.Port.decode()); @@ -214,7 +224,7 @@ public class ServicePingMain return; } - AServicePing custom = resolve(pingClass, endpoint); + AServicePing custom = resolve(pingClass, arguments, endpoint); if ( custom == null ) { print("bad_pinger:", pingClass, endpoint); return; @@ -241,7 +251,7 @@ public class ServicePingMain try { if ( cmd[0] == 'P' ) { - ServiceStatistics ss = custom.getStatistics(); + IServiceStatistics ss = custom.getStatistics(); if ( ss == null ) { ss = default_statistics; } Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java Tue Jun 25 20:45:12 2013 @@ -34,13 +34,12 @@ import java.util.Timer; import java.util.TimerTask; import org.apache.uima.UIMAFramework; -import org.apache.uima.aae.client.UimaAsynchronousEngine; -import org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_impl; import org.apache.uima.ducc.cli.IServiceApi.RegistrationOption; import org.apache.uima.ducc.cli.IUiOptions.UiOption; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.cli.UimaAsPing; +import org.apache.uima.ducc.cli.UimaAsServiceMonitor; +import org.apache.uima.ducc.common.IServiceStatistics; import org.apache.uima.ducc.common.TcpStreamHandler; -import org.apache.uima.ducc.common.UimaAsServiceMonitor; import org.apache.uima.ducc.common.utils.DuccLogger; import org.apache.uima.ducc.common.utils.DuccProperties; import org.apache.uima.ducc.common.utils.id.ADuccId; @@ -48,7 +47,6 @@ import org.apache.uima.ducc.common.utils import org.apache.uima.ducc.transport.event.common.IDuccState.JobState; import org.apache.uima.ducc.transport.event.sm.IServiceDescription; import org.apache.uima.ducc.transport.event.sm.ServiceDescription; -import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; @@ -617,7 +615,7 @@ public class ServiceSet meta_props.put("service-statistics", "N/A"); if ( serviceMeta != null ) { - ServiceStatistics ss = serviceMeta.getServiceStatistics(); + IServiceStatistics ss = serviceMeta.getServiceStatistics(); if ( ss != null ) { meta_props.put("service-alive", "" + ss.isAlive()); meta_props.put("service-healthy", "" + ss.isHealthy()); @@ -1196,32 +1194,32 @@ public class ServiceSet } } - boolean ping() - { - //String methodName = "ping"; - boolean answer = true; - - // Instantiate Uima AS Client - BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); - Map<String, Object> appCtx = new HashMap<String, Object>(); - appCtx.put(UimaAsynchronousEngine.ServerUri, broker); - appCtx.put(UimaAsynchronousEngine.Endpoint, endpoint); - appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, ServiceManagerComponent.meta_ping_timeout); // 500 ms should be enough to get GetMeta reply - - try { - // this sends GetMeta request and blocks waiting for a reply - uimaAsEngine.initialize(appCtx); - // logger.info(methodName, null, "Dependent Service Available:", getKey()); - } catch( ResourceInitializationException e) { - // either broker is down or service not available - // logger.error(methodName, null, "Remote service unavailable:", getKey()); - answer = false; - } finally { - uimaAsEngine.stop(); - } - - return answer; - } +// boolean ping() +// { +// //String methodName = "ping"; +// boolean answer = true; +// +// // Instantiate Uima AS Client +// BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); +// Map<String, Object> appCtx = new HashMap<String, Object>(); +// appCtx.put(UimaAsynchronousEngine.ServerUri, broker); +// appCtx.put(UimaAsynchronousEngine.Endpoint, endpoint); +// appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, ServiceManagerComponent.meta_ping_timeout); // 500 ms should be enough to get GetMeta reply +// +// try { +// // this sends GetMeta request and blocks waiting for a reply +// uimaAsEngine.initialize(appCtx); +// // logger.info(methodName, null, "Dependent Service Available:", getKey()); +// } catch( ResourceInitializationException e) { +// // either broker is down or service not available +// // logger.error(methodName, null, "Remote service unavailable:", getKey()); +// answer = false; +// } finally { +// uimaAsEngine.stop(); +// } +// +// return answer; +// } /** * This assumes the caller has already verified that I'm a registered service. Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/SmConstants.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/SmConstants.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/SmConstants.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/SmConstants.java Tue Jun 25 20:45:12 2013 @@ -37,6 +37,12 @@ public interface SmConstants // public enum ServicePing { + Arguments { + public String decode() { return "arguments"; } + public String description() { return "(Optional) arg string for the pinger."; } + public String argname() { return "string"; } + }, + Class { public String decode() { return "class"; } public String description() { return "Class implementing AServicePing to use for the pinger."; } @@ -68,6 +74,7 @@ public interface SmConstants public static ServicePing encode(String value) { + if ( value.equals("arguments") ) return Arguments; if ( value.equals("class") ) return Class; if ( value.equals("endpoint") ) return Endpoint; if ( value.equals("port") ) return Port; Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java Tue Jun 25 20:45:12 2013 @@ -21,7 +21,7 @@ package org.apache.uima.ducc.transport.e import java.util.ArrayList; import java.util.Map; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.common.IServiceStatistics; import org.apache.uima.ducc.common.utils.id.ADuccId; import org.apache.uima.ducc.transport.event.common.IDuccState.JobState; @@ -111,9 +111,9 @@ public interface IServiceDescription /** * Internal to DUCC. */ - public void setQueueStatistics(ServiceStatistics qstats); + public void setQueueStatistics(IServiceStatistics qstats); - public ServiceStatistics getQueueStatistics(); + public IServiceStatistics getQueueStatistics(); /** * Internal to DUCC. */ @@ -125,11 +125,11 @@ public interface IServiceDescription */ public void setStopped(boolean stopped); - public ServiceStatistics getQstats(); + public IServiceStatistics getQstats(); /** * Internal to DUCC. */ - public void setQstats(ServiceStatistics qstats); + public void setQstats(IServiceStatistics qstats); public boolean isDeregistered(); Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java?rev=1496633&r1=1496632&r2=1496633&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/ServiceDescription.java Tue Jun 25 20:45:12 2013 @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import org.apache.uima.ducc.common.ServiceStatistics; +import org.apache.uima.ducc.common.IServiceStatistics; import org.apache.uima.ducc.common.utils.id.ADuccId; import org.apache.uima.ducc.transport.event.common.IDuccState.JobState; @@ -77,7 +77,7 @@ public class ServiceDescription private long linger; private Map<String, String> dependencies; - private ServiceStatistics qstats; + private IServiceStatistics qstats; public ADuccId getId() { return id; @@ -164,12 +164,12 @@ public class ServiceDescription this.deregistered = d; } - public void setQueueStatistics(ServiceStatistics qstats) + public void setQueueStatistics(IServiceStatistics qstats) { this.qstats = qstats; } - public ServiceStatistics getQueueStatistics() + public IServiceStatistics getQueueStatistics() { return qstats; } @@ -191,11 +191,11 @@ public class ServiceDescription this.stopped = stopped; } - public ServiceStatistics getQstats() { + public IServiceStatistics getQstats() { return qstats; } - public void setQstats(ServiceStatistics qstats) { + public void setQstats(IServiceStatistics qstats) { this.qstats = qstats; }