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