Add mdc to orchestrator
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6786f8ee Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6786f8ee Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6786f8ee Branch: refs/heads/lahiru/AIRAVATA-2065 Commit: 6786f8ee0eb48ecd3b6e0984b6ff1ddab4f2404d Parents: 091546f Author: Lahiru Ginnaliya Gamathige <lah...@apache.org> Authored: Fri Sep 16 09:11:04 2016 -0700 Committer: Lahiru Ginnaliya Gamathige <lah...@apache.org> Committed: Fri Sep 16 09:11:04 2016 -0700 ---------------------------------------------------------------------- .../airavata/common/logging/MDCConstants.java | 28 ++++++++++++++++++++ .../server/OrchestratorServerHandler.java | 28 +++++++++++++++----- 2 files changed, 49 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/6786f8ee/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java ---------------------------------------------------------------------- diff --git a/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java b/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java new file mode 100644 index 0000000..34e1911 --- /dev/null +++ b/modules/commons/src/main/java/org/apache/airavata/common/logging/MDCConstants.java @@ -0,0 +1,28 @@ +/* + * + * 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.airavata.common.logging; + + +public class MDCConstants { + public static final String EXPERIMENT_ID = "experiment_id"; + public static final String GATEWAY_ID = "gateway_id"; + public static final String EXPERIMENT_NAME = "experiment_name"; +} http://git-wip-us.apache.org/repos/asf/airavata/blob/6786f8ee/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java index 725a0b1..2ac0fd1 100644 --- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java +++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java @@ -23,6 +23,7 @@ package org.apache.airavata.orchestrator.server; import org.apache.airavata.common.exception.AiravataException; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.logging.MDCConstants; import org.apache.airavata.common.utils.AiravataUtils; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.common.utils.ThriftUtils; @@ -62,6 +63,7 @@ import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.curator.utils.ZKPaths; +import org.apache.log4j.MDC; import org.apache.thrift.TBase; import org.apache.thrift.TException; import org.apache.zookeeper.data.Stat; @@ -591,7 +593,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { @Override public void onMessage(MessageContext messageContext) { - + MDC.put(MDCConstants.GATEWAY_ID, messageContext.getGatewayId()); switch (messageContext.getType()) { case EXPERIMENT: launchExperiment(messageContext); @@ -604,6 +606,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { log.error("Orchestrator got un-support message type : " + messageContext.getType()); break; } + MDC.clear(); } private void cancelExperiment(MessageContext messageContext) { @@ -611,6 +614,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent()); ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent(); ThriftUtils.createThriftFromBytes(bytes, expEvent); + log.info("Cancelling experiment with experimentId: %s gateway Id: %s", expEvent.getExperimentId(), expEvent.getGatewayId()); terminateExperiment(expEvent.getExperimentId(), expEvent.getGatewayId()); } catch (TException e) { log.error("Experiment cancellation failed due to Thrift conversion error", e); @@ -622,13 +626,16 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { } private void launchExperiment(MessageContext messageContext) { + ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent(); try { - byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent()); - ExperimentSubmitEvent expEvent = new ExperimentSubmitEvent(); - ThriftUtils.createThriftFromBytes(bytes, expEvent); - if (messageContext.isRedeliver()) { + byte[] bytes = ThriftUtils.serializeThriftObject(messageContext.getEvent()); + ThriftUtils.createThriftFromBytes(bytes, expEvent); + MDC.put(MDCConstants.EXPERIMENT_ID, expEvent.getExperimentId()); + log.info("Launching experiment with experimentId: %s gateway Id: %s", expEvent.getExperimentId(), expEvent.getGatewayId()); + if (messageContext.isRedeliver()) { ExperimentModel experimentModel = (ExperimentModel) experimentCatalog. get(ExperimentCatalogModelType.EXPERIMENT, expEvent.getExperimentId()); + MDC.put(MDCConstants.EXPERIMENT_NAME, experimentModel.getExperimentName()); if (experimentModel.getExperimentStatus().get(0).getState() == ExperimentState.CREATED) { launchExperiment(expEvent.getExperimentId(), expEvent.getGatewayId()); } @@ -636,11 +643,18 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { launchExperiment(expEvent.getExperimentId(), expEvent.getGatewayId()); } } catch (TException e) { - log.error("Experiment launch failed due to Thrift conversion error", e); + String logMessage = expEvent.getExperimentId() != null && expEvent.getGatewayId() != null ? + String.format("Experiment launch failed due to Thrift conversion error, experimentId: %s, gatewayId: %s", + expEvent.getExperimentId(), expEvent.getGatewayId()): "Experiment launch failed due to Thrift conversion error"; + log.error(logMessage, e); } catch (RegistryException e) { - log.error("Experiment launch failed due to registry access issue", e); + String logMessage = expEvent.getExperimentId() != null && expEvent.getGatewayId() != null ? + String.format("Experiment launch failed due to registry access issue, experimentId: %s, gatewayId: %s", + expEvent.getExperimentId(), expEvent.getGatewayId()): "Experiment launch failed due to registry access issue"; + log.error(logMessage, e); }finally { experimentSubscriber.sendAck(messageContext.getDeliveryTag()); + MDC.clear(); } }