Author: degenaro
Date: Wed Jun 22 18:27:05 2016
New Revision: 1749751

URL: http://svn.apache.org/viewvc?rev=1749751&view=rev
Log:
UIMA-4964 DUCC Web Server (WS) improved test for DB aliveness

Added:
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
   (with props)
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
   (with props)
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
   (with props)
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
   (with props)
Modified:
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDaemonsData.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IWebServer.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/event/WebServerEventListener.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/BrokerHelper.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDaemonsData.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDaemonsData.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDaemonsData.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDaemonsData.java
 Wed Jun 22 18:27:05 2016
@@ -18,16 +18,21 @@
 */
 package org.apache.uima.ducc.ws;
 
+import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties.DaemonName;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
 import org.apache.uima.ducc.common.utils.TimeStamp;
 import org.apache.uima.ducc.transport.event.AbstractDuccEvent;
 import org.apache.uima.ducc.transport.event.DuccEvent.EventType;
-
+import org.apache.uima.ducc.ws.server.DuccWebProperties;
 
 public class DuccDaemonsData {
-
+       
+       private static DuccLogger duccLogger = 
DuccLoggerComponents.getWsLogger(DuccDaemonsData.class.getName());
+       
        private static DuccDaemonsData duccDaemonsData = new DuccDaemonsData();
        private static ConcurrentHashMap<DaemonName,String> mapCurr = new 
ConcurrentHashMap<DaemonName,String>();
        private static ConcurrentHashMap<DaemonName,String> mapPrev = new 
ConcurrentHashMap<DaemonName,String>();
@@ -65,6 +70,11 @@ public class DuccDaemonsData {
                        putHeartbeat(key);
                        putEventSize(key, duccEvent);
                        break;
+               case WEBSERVER_STATE:
+                       key = DaemonName.Webserver;
+                       putHeartbeat(key);
+                       putEventSize(key, duccEvent);
+                       break;  
                default:
                        break;
                }
@@ -162,5 +172,53 @@ public class DuccDaemonsData {
                }
                return retVal;
        }
+       
+       /**
+        * @return number of millis since last receipt of self publication
+        */
+       private long getWsTod() {
+               long retVal = Long.MAX_VALUE;
+               DaemonName key = DaemonName.Webserver;
+               if(mapCurr.containsKey(key)) {
+                       String t1 = TimeStamp.getCurrentMillis();
+                       String t0 = mapCurr.get(key);
+                       long millis = TimeStamp.diffMillis(t1, t0);
+                       retVal = millis;
+               }
+               return retVal;
+       }
+       
+       /**
+        * @return number of millis after which webserver publication is 
considered late
+        */
+       private long getMillisMIA() {
+               String methodName = "getMillisMIA";
+               long secondsMIA = -1;
+               Properties properties = DuccWebProperties.get();
+               String ws_rate = 
properties.getProperty("ducc.ws.state.publish.rate");
+               String ws_ratio = "1";
+               try {
+                       long rate = Long.parseLong(ws_rate.trim());
+                       long ratio = Long.parseLong(ws_ratio .trim());
+                       secondsMIA = 3 * rate * ratio;
+               }
+               catch(Throwable t) {
+                       duccLogger.debug(methodName, null, t);
+               }
+               return secondsMIA;
+       }
+       
+       /**
+        * 
+        * @return true if webserver self publications are on time, false 
otherwise
+        */
+       public boolean isWsPublicationOntime() {
+               boolean retVal = true;
+               long expiry = getMillisMIA();
+               if(getWsTod() > expiry) {
+                       retVal = false;
+               }
+               return retVal;
+       }
        
 }

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IWebServer.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IWebServer.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IWebServer.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/IWebServer.java
 Wed Jun 22 18:27:05 2016
@@ -23,6 +23,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.PmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.RmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.SmStateDuccEvent;
+import org.apache.uima.ducc.ws.self.message.WebServerStateDuccEvent;
 
 public interface IWebServer {
        public void update(OrchestratorStateDuccEvent duccEvent);
@@ -30,4 +31,5 @@ public interface IWebServer {
        public void update(RmStateDuccEvent duccEvent);
        public void update(SmStateDuccEvent duccEvent);
        public void update(PmStateDuccEvent duccEvent);
+       public void update(WebServerStateDuccEvent duccEvent);
 }

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
 Wed Jun 22 18:27:05 2016
@@ -42,6 +42,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.SmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.common.IDuccWorkMap;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
+import org.apache.uima.ducc.ws.self.message.WebServerStateDuccEvent;
 import org.apache.uima.ducc.ws.server.DuccListeners;
 import org.apache.uima.ducc.ws.server.DuccWebServer;
 import org.apache.uima.ducc.ws.utils.DatedNodeMetricsUpdateDuccEvent;
@@ -239,4 +240,14 @@ implements IWebServer {
                duccLogger.trace(methodName, jobid, duccMsg.fetch("exit"));
        }
        
+       /**
+        * process the received self-publication (broker is alive!)
+        */
+       public void update(WebServerStateDuccEvent duccEvent) {
+               String methodName = "update";
+               duccLogger.trace(methodName, jobid, duccMsg.fetch("enter"));
+               duccLogger.debug(methodName, jobid, 
duccMsg.fetchLabel("received")+"PmStateDuccEvent");
+               DuccDaemonsData.getInstance().put(duccEvent);
+               duccLogger.trace(methodName, jobid, duccMsg.fetch("exit"));
+       }
 }

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
 Wed Jun 22 18:27:05 2016
@@ -25,10 +25,12 @@ import javax.jms.ObjectMessage;
 import org.apache.activemq.command.ActiveMQMessage;
 import org.apache.activemq.util.ByteSequence;
 import org.apache.camel.Exchange;
+import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jms.JmsMessage;
 import org.apache.uima.ducc.common.config.CommonConfiguration;
+import org.apache.uima.ducc.common.config.DuccBlastGuardPredicate;
 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;
@@ -36,6 +38,7 @@ import org.apache.uima.ducc.transport.Du
 import org.apache.uima.ducc.ws.DuccBoot;
 import org.apache.uima.ducc.ws.WebServerComponent;
 import org.apache.uima.ducc.ws.event.WebServerEventListener;
+import org.apache.uima.ducc.ws.self.message.WebServerStateProcessor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -95,6 +98,39 @@ public class WebServerConfiguration {
     }
        
        /**
+        * Creates Camel router that will publish WebServer state at regular 
intervals.
+        * 
+        * Note: failure to receive these self-publications indicates that 
broker is down!
+        * 
+        * @param targetEndpointToReceiveWebServerStateUpdate - endpoint where 
to publish WS state 
+        * @param statePublishRate - how often to publish state
+        * @return
+        * @throws Exception
+        */
+       private RouteBuilder routeBuilderForWebServerStatePost(final String 
targetEndpointToReceiveWebServerStateUpdate, final int statePublishRate) throws 
Exception {
+               final WebServerStateProcessor wssp =  // an object responsible 
for generating the state 
+                       new WebServerStateProcessor();
+               
+               return new RouteBuilder() {
+                     public void configure() {                     
+                       
+                       final Predicate blastFilter = new 
DuccBlastGuardPredicate(duccLogger);
+                       
+                       
from("timer:webserverStateDumpTimer?fixedRate=true&period=" + statePublishRate)
+                             // This route uses a filter to prevent sudden 
bursts of messages which
+                                 // may flood DUCC daemons causing chaos. The 
filter disposes any event
+                                 // that appears in a window of 1 sec or less.
+                                 .filter(blastFilter)  
+                             //.process(xmStart)
+                                 .process(wssp)
+                                 //.process(xmEnded)
+                                 
.to(targetEndpointToReceiveWebServerStateUpdate)
+                                 ;
+                     }
+                   };
+       }
+       
+       /**
         * Creates and initializes {@link WebServerComponent} instance. @Bean 
annotation identifies {@link WebServerComponent}
         * as a Spring framework Bean which will be managed by Spring 
container.  
         * 
@@ -129,6 +165,8 @@ public class WebServerConfiguration {
                        
ws.getContext().addRoutes(this.routeBuilderForIncomingRequests(common.rmStateUpdateEndpoint,
 delegateListener));
                        
ws.getContext().addRoutes(this.routeBuilderForIncomingRequests(common.smStateUpdateEndpoint,
 delegateListener));
                        
ws.getContext().addRoutes(this.routeBuilderForIncomingRequests(common.pmStateUpdateEndpoint,
 delegateListener));
+                       
ws.getContext().addRoutes(this.routeBuilderForIncomingRequests(common.wsStateUpdateEndpoint,
 delegateListener));
+                       
ws.getContext().addRoutes(this.routeBuilderForWebServerStatePost(common.wsStateUpdateEndpoint,
 Integer.parseInt(common.wsStatePublishRate)));
                        String dbEndpoint = 
common.dbComponentStateUpdateEndpoint;
                        if(dbEndpoint != null) {
                                
ws.getContext().addRoutes(this.routeBuilderForIncomingRequests(common.dbComponentStateUpdateEndpoint,
 delegateListener));

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/event/WebServerEventListener.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/event/WebServerEventListener.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/event/WebServerEventListener.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/event/WebServerEventListener.java
 Wed Jun 22 18:27:05 2016
@@ -31,6 +31,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.SmStateDuccEvent;
 import org.apache.uima.ducc.transport.event.delegate.DuccEventDelegateListener;
 import org.apache.uima.ducc.ws.IWebServer;
+import org.apache.uima.ducc.ws.self.message.WebServerStateDuccEvent;
 
 public class WebServerEventListener implements DuccEventDelegateListener {
        
@@ -98,6 +99,20 @@ public class WebServerEventListener impl
                try {
                        duccEvent.setEventSize(pubSize);
                        webServer.update(duccEvent);
+               }
+               catch(Throwable t) {
+                       duccLogger.error(location, jobid, t);
+               }
+       }
+       
+       /**
+        * Receipt of self-publication indicates that broker is alive!
+        */
+       public void onWsStateDuccEvent(@Body WebServerStateDuccEvent duccEvent, 
@Header("pubSize")Long pubSize) {
+               String location = "onWsStateDuccEvent";
+               try {
+                       duccEvent.setEventSize(pubSize);
+                       webServer.update(duccEvent);
                }
                catch(Throwable t) {
                        duccLogger.error(location, jobid, t);

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/BrokerHelper.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/BrokerHelper.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/BrokerHelper.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/helper/BrokerHelper.java
 Wed Jun 22 18:27:05 2016
@@ -44,6 +44,7 @@ import org.apache.uima.ducc.common.utils
 import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
 import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
 import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.ws.DuccDaemonsData;
 
 public class BrokerHelper extends JmxHelper {
 
@@ -483,11 +484,12 @@ public class BrokerHelper extends JmxHel
                return startTime;
        }
        
+       /**
+        * @return true if regular self-publications via broker are being 
received, 
+        *         false otherwise
+        */
        public boolean isAlive() {
-               boolean retVal = false;
-               if(getPID() != 0) {
-                       retVal = true;
-               }
+               boolean retVal = 
DuccDaemonsData.getInstance().isWsPublicationOntime();
                return retVal;
        }
 

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java?rev=1749751&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
 Wed Jun 22 18:27:05 2016
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.self.message;
+
+public interface WebServer {
+
+       public WebServerStateDuccEvent getState();
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java?rev=1749751&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
 Wed Jun 22 18:27:05 2016
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.self.message;
+
+import java.io.Serializable;
+
+/**
+ * Payload for webserver message to self via broker
+ */
+public class WebServerState implements Serializable {
+
+       private static final long serialVersionUID = 1L;
+       
+       private long tod = System.currentTimeMillis();
+       
+       public WebServerState() {
+       }
+       
+       public long getTod() {
+               return tod;
+       }
+       
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerState.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java?rev=1749751&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
 Wed Jun 22 18:27:05 2016
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.self.message;
+
+import org.apache.uima.ducc.transport.event.AbstractDuccEvent;
+
+/**
+ * Envelope holding payload for webserver message to self via broker
+ */
+public class WebServerStateDuccEvent extends AbstractDuccEvent {
+
+       private static final long serialVersionUID = 1L;
+
+       private WebServerState state = null;
+       
+       public WebServerStateDuccEvent() {
+               super(EventType.WEBSERVER_STATE);
+       }
+       
+       public void setState(WebServerState value) {
+               state = value;
+       }
+       
+       public WebServerState getState() {
+               return state;
+       }
+       
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateDuccEvent.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java?rev=1749751&view=auto
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
 (added)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
 Wed Jun 22 18:27:05 2016
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.ws.self.message;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+/**
+ * Processor of received webserver messages to self via broker
+ */
+public class WebServerStateProcessor implements Processor {
+       
+       @Override
+       public void process(Exchange exchange) throws Exception {
+               WebServerStateDuccEvent wse = new WebServerStateDuccEvent();
+               WebServerState wss = new WebServerState();
+               wse.setState(wss);
+               exchange.getIn().setBody(wse);
+       }
+
+}

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/self/message/WebServerStateProcessor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
 Wed Jun 22 18:27:05 2016
@@ -1304,6 +1304,7 @@ public class DuccHandlerClassic extends
                DuccMachinesData duccMachinesData = 
DuccMachinesData.getInstance();
                
                int counter = 0;
+               boolean brokerAlive = brokerHelper.isAlive();
                daemons:
                for(DaemonName daemonName : 
DuccDaemonRuntimeProperties.daemonNames) {
                        switch(daemonName) {
@@ -1328,7 +1329,7 @@ public class DuccHandlerClassic extends
                        Properties properties = 
DuccDaemonRuntimeProperties.getInstance().get(daemonName);
                        switch(daemonName) {
                        case Broker:
-                               if(brokerHelper.isAlive()) {
+                               if(brokerAlive) {
                                        status = DuccHandlerUtils.up();
                                }
                                else {
@@ -1398,7 +1399,9 @@ public class DuccHandlerClassic extends
                                        try {
                                                long overtime = timeout - 
Long.parseLong(heartbeatLast);
                                                if(overtime < 0) {
-                                                       status = 
DuccHandlerUtils.down();
+                                                       if(brokerAlive) {
+                                                               status = 
DuccHandlerUtils.down();
+                                                       }
                                                        
if(daemonName.equals(DaemonName.Orchestrator)) {
                                                                
if(ComponentHelper.isLocked(IDuccEnv.DUCC_STATE_DIR,"orchestrator")) {
                                                                        String 
filename = 
ComponentHelper.getLockFileName(IDuccEnv.DUCC_STATE_DIR,"orchestrator");
@@ -1409,7 +1412,9 @@ public class DuccHandlerClassic extends
                                                        }
                                                }
                                                else {
-                                                       status = 
DuccHandlerUtils.up();
+                                                       if(brokerAlive) {
+                                                               status = 
DuccHandlerUtils.up();
+                                                       }
                                                        
if(daemonName.equals(DaemonName.Orchestrator)) {
                                                                int jdCount = 
DuccData.getInstance().getLive().getJobDriverNodeCount();
                                                                if(jdCount == 
0) {
@@ -1504,16 +1509,21 @@ public class DuccHandlerClassic extends
                                sb.append(trGet(counter));
                                // Status
                                StringBuffer status = new StringBuffer();
-                               String machineStatus = machineInfo.getStatus();
-                               if(machineStatus.equals("down")) {
-                                       //status.append("<span 
class=\"health_red\""+">");
-                                       status.append(DuccHandlerUtils.down());
-                                       //status.append("</span>");
-                               }
-                               else if(machineStatus.equals("up")) {
-                                       //status.append("<span 
class=\"health_green\""+">");
-                                       status.append(DuccHandlerUtils.up());
-                                       //status.append("</span>");
+                               if(brokerAlive) {
+                                       String machineStatus = 
machineInfo.getStatus();
+                                       if(machineStatus.equals("down")) {
+                                               //status.append("<span 
class=\"health_red\""+">");
+                                               
status.append(DuccHandlerUtils.down());
+                                               //status.append("</span>");
+                                       }
+                                       else if(machineStatus.equals("up")) {
+                                               //status.append("<span 
class=\"health_green\""+">");
+                                               
status.append(DuccHandlerUtils.up());
+                                               //status.append("</span>");
+                                       }
+                                       else {
+                                               
status.append(DuccHandlerUtils.unknown());
+                                       }
                                }
                                else {
                                        
status.append(DuccHandlerUtils.unknown());

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1749751&r1=1749750&r2=1749751&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
 Wed Jun 22 18:27:05 2016
@@ -1849,7 +1849,7 @@ public class DuccHandlerJsonFormat exten
                
                String wsHostIP = getWebServerHostIP();
                String wsHostName = getWebServerHostName();
-               
+               boolean brokerAlive = brokerHelper.isAlive();
                daemons:
                for(DaemonName daemonName : 
DuccDaemonRuntimeProperties.daemonNames) {
                        row = new JsonArray();
@@ -1875,7 +1875,7 @@ public class DuccHandlerJsonFormat exten
                        }
                        switch(daemonName) {
                        case Broker:
-                               if(brokerHelper.isAlive()) {
+                               if(brokerAlive) {
                                        status = DuccHandlerUtils.up();
                                }
                                else {
@@ -1945,7 +1945,9 @@ public class DuccHandlerJsonFormat exten
                                        try {
                                                long overtime = timeout - 
Long.parseLong(heartbeatLast);
                                                if(overtime < 0) {
-                                                       status = 
DuccHandlerUtils.down();
+                                                       if(brokerAlive) {
+                                                               status = 
DuccHandlerUtils.down();
+                                                       }
                                                        
if(daemonName.equals(DaemonName.Orchestrator)) {
                                                                
if(ComponentHelper.isLocked(IDuccEnv.DUCC_STATE_DIR,"orchestrator")) {
                                                                        String 
filename = 
ComponentHelper.getLockFileName(IDuccEnv.DUCC_STATE_DIR,"orchestrator");
@@ -1956,7 +1958,9 @@ public class DuccHandlerJsonFormat exten
                                                        }
                                                }
                                                else {
-                                                       status = 
DuccHandlerUtils.up();
+                                                       if(brokerAlive) {
+                                                               status = 
DuccHandlerUtils.up();
+                                                       }
                                                        
if(daemonName.equals(DaemonName.Orchestrator)) {
                                                                int jdCount = 
DuccData.getInstance().getLive().getJobDriverNodeCount();
                                                                if(jdCount == 
0) {
@@ -2035,16 +2039,21 @@ public class DuccHandlerJsonFormat exten
                                Properties properties = 
drp.getAgent(machineName);
                                // Status
                                StringBuffer status = new StringBuffer();
-                               String machineStatus = machineInfo.getStatus();
-                               if(machineStatus.equals("down")) {
-                                       //status.append("<span 
class=\"health_red\""+">");
-                                       status.append(DuccHandlerUtils.down());
-                                       //status.append("</span>");
-                               }
-                               else if(machineStatus.equals("up")) {
-                                       //status.append("<span 
class=\"health_green\""+">");
-                                       status.append(DuccHandlerUtils.up());
-                                       //status.append("</span>");
+                               if(brokerAlive) {
+                                       String machineStatus = 
machineInfo.getStatus();
+                                       if(machineStatus.equals("down")) {
+                                               //status.append("<span 
class=\"health_red\""+">");
+                                               
status.append(DuccHandlerUtils.down());
+                                               //status.append("</span>");
+                                       }
+                                       else if(machineStatus.equals("up")) {
+                                               //status.append("<span 
class=\"health_green\""+">");
+                                               
status.append(DuccHandlerUtils.up());
+                                               //status.append("</span>");
+                                       }
+                                       else {
+                                               
status.append(DuccHandlerUtils.unknown());
+                                       }
                                }
                                else {
                                        
status.append(DuccHandlerUtils.unknown());


Reply via email to