Repository: airavata Updated Branches: refs/heads/master a256f3516 -> 881d169c6
http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerImpl.java ---------------------------------------------------------------------- diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerImpl.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerImpl.java new file mode 100644 index 0000000..74ab401 --- /dev/null +++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/logger/AiravataLoggerImpl.java @@ -0,0 +1,323 @@ +/* + * + * 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.logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AiravataLoggerImpl implements AiravataLogger{ + + private Logger logger; + + public AiravataLoggerImpl(Class aClass) { + logger = LoggerFactory.getLogger(aClass); + } + + public AiravataLoggerImpl(String className) { + logger = LoggerFactory.getLogger(className); + } + + + @Override + public String getName() { + return logger.getName(); + } + + @Override + public boolean isTraceEnabled() { + return logger.isTraceEnabled(); + } + + @Override + public void trace(String msg) { + logger.trace(msg); + } + + @Override + public void traceId(String etjId, String msg) { + logger.trace(getAiravataLogMessage(etjId, msg)); + } + + @Override + public void trace(String format, Object arg) { + logger.trace(format, arg); + } + + @Override + public void traceId(String etjId, String format, Object arg) { + logger.trace(getAiravataLogMessage(etjId, format), arg); + } + + @Override + public void trace(String format, Object arg1, Object arg2) { + logger.trace(format, arg1, arg2); + } + + @Override + public void traceId(String etjId, String format, Object arg1, Object arg2) { + logger.trace(getAiravataLogMessage(etjId,format), arg1, arg2); + } + + @Override + public void trace(String format, Object... arguments) { + logger.trace(format, arguments); + } + + @Override + public void traceId(String etjId, String format, Object... arguments) { + logger.trace(getAiravataLogMessage(etjId, format), arguments); + } + + @Override + public void trace(String msg, Throwable t) { + logger.trace(msg, t); + } + + @Override + public void traceId(String etjId, String msg, Throwable t) { + logger.trace(getAiravataLogMessage(etjId, msg), t); + } + + @Override + public boolean isDebugEnabled() { + return logger.isDebugEnabled(); + } + + @Override + public void debug(String msg) { + logger.debug(msg); + } + + @Override + public void debugId(String etjId, String msg) { + logger.debug(getAiravataLogMessage(etjId, msg)); + } + + @Override + public void debug(String format, Object arg) { + logger.debug(format, arg); + } + + @Override + public void debugId(String etjId, String format, Object arg) { + logger.debug(getAiravataLogMessage(etjId, format), arg); + } + + @Override + public void debug(String format, Object arg1, Object arg2) { + logger.debug(format, arg1, arg2); + } + + @Override + public void debugId(String etjId, String format, Object arg1, Object arg2) { + logger.debug(getAiravataLogMessage(etjId, format), arg1, arg2); + } + + @Override + public void debug(String format, Object... arguments) { + logger.debug(format, arguments); + } + + @Override + public void debugId(String etjId, String format, Object... arguments) { + logger.debug(getAiravataLogMessage(etjId, format), arguments); + } + + @Override + public void debug(String msg, Throwable t) { + logger.debug(msg, t); + } + + @Override + public void debugId(String etjId, String msg, Throwable t) { + logger.debug(getAiravataLogMessage(etjId, msg), t); + } + + @Override + public boolean isInfoEnabled() { + return logger.isInfoEnabled(); + } + + @Override + public void info(String msg) { + logger.info(msg); + } + + @Override + public void infoId(String etjId, String msg) { + logger.info(getAiravataLogMessage(etjId, msg)); + } + + @Override + public void info(String format, Object arg) { + logger.info(format, arg); + } + + @Override + public void infoId(String etjId, String format, Object arg) { + logger.info(getAiravataLogMessage(etjId, format), arg); + } + + @Override + public void info(String format, Object arg1, Object arg2) { + logger.info(format, arg1, arg2); + } + + @Override + public void infoId(String etjId, String format, Object arg1, Object arg2) { + logger.info(getAiravataLogMessage(etjId, format), arg1, arg2); + } + + @Override + public void info(String format, Object... arguments) { + logger.info(format, arguments); + } + + @Override + public void infoId(String etjId, String format, Object... arguments) { + logger.info(getAiravataLogMessage(etjId, format), arguments); + } + + @Override + public void info(String msg, Throwable t) { + logger.info(msg, t); + } + + @Override + public void infoId(String etjId, String msg, Throwable t) { + logger.info(getAiravataLogMessage(etjId, msg), t); + } + + @Override + public boolean isWarnEnabled() { + return logger.isWarnEnabled(); + } + + @Override + public void warn(String msg) { + logger.warn(msg); + } + + @Override + public void warnId(String etjId, String msg) { + logger.warn(getAiravataLogMessage(etjId, msg)); + } + + @Override + public void warn(String format, Object arg) { + logger.warn(format, arg); + } + + @Override + public void warnId(String etjId, String format, Object arg) { + logger.warn(getAiravataLogMessage(etjId, format), arg); + } + + @Override + public void warn(String format, Object... arguments) { + logger.warn(format, arguments); + } + + @Override + public void warnId(String etjId, String format, Object... arguments) { + logger.warn(getAiravataLogMessage(etjId, format), arguments); + } + + @Override + public void warn(String format, Object arg1, Object arg2) { + logger.warn(format, arg1, arg2); + } + + @Override + public void warnId(String etjId, String format, Object arg1, Object arg2) { + logger.warn(getAiravataLogMessage(etjId, format), arg1, arg2); + } + + @Override + public void warn(String msg, Throwable t) { + logger.warn(msg, t); + } + + @Override + public void warnId(String etjId, String msg, Throwable t) { + logger.warn(getAiravataLogMessage(etjId, msg), t); + } + + @Override + public boolean isErrorEnabled() { + return logger.isErrorEnabled(); + } + + @Override + public void error(String msg) { + logger.error(msg); + } + + @Override + public void errorId(String etjId, String msg) { + logger.error(getAiravataLogMessage(etjId, msg)); + } + + @Override + public void error(String format, Object arg) { + logger.error(format, arg); + } + + @Override + public void errorId(String etjId, String format, Object arg) { + logger.error(getAiravataLogMessage(etjId, format), arg); + } + + @Override + public void error(String format, Object arg1, Object arg2) { + logger.error(format, arg1, arg2); + } + + @Override + public void errorId(String etjId, String format, Object arg1, Object arg2) { + logger.error(getAiravataLogMessage(etjId, format), arg1, arg2); + } + + @Override + public void error(String format, Object... arguments) { + logger.error(format, arguments); + } + + @Override + public void errorId(String etjId, String format, Object... arguments) { + logger.error(getAiravataLogMessage(etjId, format), arguments); + } + + @Override + public void error(String msg, Throwable t) { + logger.error(msg, t); + } + + @Override + public void errorId(String etjId, String msg, Throwable t) { + logger.error(getAiravataLogMessage(etjId, msg), t); + } + + private String getAiravataLogMessage(String etjId, String msg) { + return new StringBuilder("Id:").append(etjId).append(" : ").append(msg).toString(); + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java index 3d86dff..2cadfc7 100644 --- a/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java +++ b/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java @@ -22,11 +22,12 @@ package org.apache.airavata.gfac.server; import com.google.common.eventbus.EventBus; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.Constants; import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; -import org.apache.airavata.gfac.GFacException; import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.cpi.GFac; import org.apache.airavata.gfac.core.utils.GFacThreadPoolExecutor; @@ -38,8 +39,6 @@ import org.apache.airavata.registry.cpi.Registry; import org.apache.thrift.TException; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -49,7 +48,7 @@ import java.util.concurrent.Future; public class GfacServerHandler implements GfacService.Iface, Watcher{ - private final static Logger logger = LoggerFactory.getLogger(GfacServerHandler.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(GfacServerHandler.class); private Registry registry; @@ -194,20 +193,29 @@ public class GfacServerHandler implements GfacService.Iface, Watcher{ * @param gatewayId */ public boolean submitJob(String experimentId, String taskId, String gatewayId) throws TException { - logger.info("GFac Recieved the Experiment: " + experimentId + " TaskId: " + taskId); + logger.infoId(experimentId, "GFac Received the Experiment: {} TaskId: {}", experimentId, taskId); GFac gfac = getGfac(); InputHandlerWorker inputHandlerWorker = new InputHandlerWorker(gfac, experimentId, taskId, gatewayId); inHandlerFutures.add(GFacThreadPoolExecutor.getCachedThreadPool().submit(inputHandlerWorker)); + logger.infoId(experimentId, "Invoked in handle worker for the experiment {} , task {} and gateway {}", + experimentId, taskId, gatewayId); return true; } public boolean cancelJob(String experimentId, String taskId) throws TException { - logger.info("GFac Recieved the Experiment: " + experimentId + " TaskId: " + taskId); + logger.infoId(experimentId, "GFac Received cancel job request for Experiment: {} TaskId: {} ", experimentId, taskId); GFac gfac = getGfac(); try { - return gfac.cancel(experimentId, taskId, ServerSettings.getSetting(Constants.GATEWAY_NAME)); + if (gfac.cancel(experimentId, taskId, ServerSettings.getSetting(Constants.GATEWAY_NAME))) { + logger.debugId(experimentId, "Successfully cancelled job, experiment {} , task {}", experimentId, taskId); + return true; + } else { + logger.errorId(experimentId, "Job cancellation failed, experiment {} , task {}", experimentId, taskId); + return false; + } } catch (Exception e) { - throw new TException("Error launching the experiment : " + e.getMessage(), e); + logger.errorId(experimentId, "Error cancelling the experiment {}.", experimentId); + throw new TException("Error cancelling the experiment : " + e.getMessage(), e); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/MonitorID.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/MonitorID.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/MonitorID.java index fa77324..fa4ecd2 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/MonitorID.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/MonitorID.java @@ -20,14 +20,11 @@ */ package org.apache.airavata.gfac.core.monitor; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.commons.gfac.type.HostDescription; -import org.apache.airavata.gfac.Constants; -import org.apache.airavata.gfac.GFacException; -import org.apache.airavata.gfac.SecurityContext; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.model.workspace.experiment.JobState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.sql.Timestamp; import java.util.Date; @@ -38,7 +35,7 @@ This is the object which contains the data to identify a particular Job to start the monitoring */ public class MonitorID { - private final static Logger logger = LoggerFactory.getLogger(MonitorID.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(MonitorID.class); private String userName; @@ -193,12 +190,12 @@ public class MonitorID { // because in some machines job state vanishes quicckly when the job is done // during that case job state comes as unknown.so we handle it here. if (this.state != null && status.equals(JobState.UNKNOWN)) { - int loginfo = getFailedCount() + 1; - logger.info("JobId:" + this.getJobID() + " Increasing the failed count to:" + loginfo + ""); - setFailedCount(getFailedCount() + 1); + this.failedCount++; + logger.infoId(this.getJobID(), "{} status came for job {}, Increasing the failed count to: {}.", + status.toString(), this.jobID, this.failedCount); }else { // normal scenario - logger.info("Resetting failed count to 0 because correct state came in"); + logger.infoId(this.getJobID(), "Valid status {} came for job {}, resetting fail count to 0", status.toString(), this.jobID); setFailedCount(0); this.state = status; } http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java index 413e3a8..ceb440c 100644 --- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java +++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/handlers/GridPullMonitorHandler.java @@ -21,6 +21,8 @@ package org.apache.airavata.gfac.monitor.handlers; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; @@ -39,8 +41,6 @@ import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.File; import java.util.Properties; @@ -52,7 +52,7 @@ import java.util.Properties; * which is a slight variation of qstat monitoring. */ public class GridPullMonitorHandler extends ThreadedHandler implements Watcher{ - private final static Logger logger = LoggerFactory.getLogger(GridPullMonitorHandler.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(GridPullMonitorHandler.class); private HPCPullMonitor hpcPullMonitor; @@ -102,7 +102,8 @@ public class GridPullMonitorHandler extends ThreadedHandler implements Watcher{ CommonUtils.addMonitortoQueue(hpcPullMonitor.getQueue(), monitorID); CommonUtils.increaseZkJobCount(monitorID); // update change job count to zookeeper } catch (AiravataMonitorException e) { - logger.error("Error adding monitorID object to the queue with experiment ", monitorID.getExperimentID()); + logger.errorId(monitorID.getJobID(), "Error adding job {} monitorID object to the queue with experiment {}", + monitorID.getJobID(), monitorID.getExperimentID()); } } public AuthenticationInfo getAuthenticationInfo() { http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java index 5a14ac2..4cc36c5 100644 --- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java +++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java @@ -21,18 +21,14 @@ package org.apache.airavata.gfac.monitor.impl.pull.qstat; import com.google.common.eventbus.EventBus; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.commons.gfac.type.HostDescription; -import org.apache.airavata.gfac.GFacException; -import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.cpi.GFac; import org.apache.airavata.gfac.core.monitor.MonitorID; -import org.apache.airavata.gfac.core.monitor.TaskIdentity; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangeRequest; -import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangeRequest; -import org.apache.airavata.gfac.core.utils.GFacThreadPoolExecutor; -import org.apache.airavata.gfac.core.utils.OutHandlerWorker; import org.apache.airavata.gfac.monitor.HostMonitorData; import org.apache.airavata.gfac.monitor.UserMonitorData; import org.apache.airavata.gfac.monitor.core.PullMonitor; @@ -43,12 +39,9 @@ import org.apache.airavata.gsi.ssh.api.SSHApiException; import org.apache.airavata.gsi.ssh.api.authentication.AuthenticationInfo; import org.apache.airavata.gsi.ssh.api.job.JobDescriptor; import org.apache.airavata.model.workspace.experiment.JobState; -import org.apache.airavata.model.workspace.experiment.TaskState; import org.apache.airavata.schemas.gfac.GsisshHostType; import org.apache.airavata.schemas.gfac.SSHHostType; import org.apache.zookeeper.ZooKeeper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.sql.Timestamp; import java.util.*; @@ -61,7 +54,7 @@ import java.util.concurrent.LinkedBlockingQueue; * in grid resources and retrieve the job status. */ public class HPCPullMonitor extends PullMonitor { - private final static Logger logger = LoggerFactory.getLogger(HPCPullMonitor.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(HPCPullMonitor.class); public static final int FAILED_COUNT = 3; // I think this should use DelayedBlocking Queue to do the monitoring*/ @@ -190,11 +183,12 @@ public class HPCPullMonitor extends PullMonitor { while(iterator1.hasNext()) { String cancelMId = iterator1.next(); if (cancelMId.equals(iMonitorID.getExperimentID() + "+" + iMonitorID.getTaskID())) { - logger.info("Found a match in monitoring Queue, so marking this job to remove from monitor queue " + cancelMId); - logger.info("ExperimentID: " + cancelMId.split("\\+")[0] + ",TaskID: " + cancelMId.split("\\+")[1] + "JobID" + iMonitorID.getJobID()); iMonitorID.setStatus(JobState.CANCELED); completedJobs.put(iMonitorID.getJobName(), iMonitorID); iterator1.remove(); + logger.debugId(cancelMId, "Found a match in cancel monitor queue, hence moved to the " + + "completed job queue, experiment {}, task {} , job {}", + iMonitorID.getExperimentID(), iMonitorID.getTaskID(), iMonitorID.getJobID()); break; } } @@ -210,6 +204,9 @@ public class HPCPullMonitor extends PullMonitor { logger.info("This job is finished because push notification came with <username,jobName> " + completeId); completedJobs.put(iMonitorID.getJobName(), iMonitorID); iMonitorID.setStatus(JobState.COMPLETE); + logger.debugId(completeId, "Push notification updated job {} status to {}. " + + "experiment {} , task {}.", iMonitorID.getJobID(), JobState.COMPLETE.toString(), + iMonitorID.getExperimentID(), iMonitorID.getTaskID()); break; } //we have to make this empty everytime we iterate, otherwise this list will accumulate and will @@ -231,25 +228,31 @@ public class HPCPullMonitor extends PullMonitor { iMonitorID.setStatus(jobStatuses.get(iMonitorID.getJobID() + "," + iMonitorID.getJobName())); //IMPORTANT this is NOT a simple setter we have a logic }else if(JobState.COMPLETE.equals(iMonitorID.getStatus())){ completedJobs.put(iMonitorID.getJobName(), iMonitorID); + logger.debugId(iMonitorID.getJobID(), "Moved job {} to completed jobs map, experiment {}, " + + "task {}", iMonitorID.getJobID(), iMonitorID.getExperimentID(), iMonitorID.getTaskID()); } jobStatus = new JobStatusChangeRequest(iMonitorID); // we have this JobStatus class to handle amqp monitoring publisher.publish(jobStatus); + logger.debugId(jobStatus.getIdentity().getJobId(), "Published job status change request, " + + "experiment {} , task {}", jobStatus.getIdentity().getExperimentID(), + jobStatus.getIdentity().getTaskId()); // if the job is completed we do not have to put the job to the queue again iMonitorID.setLastMonitored(new Timestamp((new Date()).getTime())); if (iMonitorID.getFailedCount() > FAILED_COUNT) { - logger.error("Tried to monitor the job with ID " + iMonitorID.getJobID() + " But failed" + iMonitorID.getFailedCount() + - " 3 times, so skip this Job from Monitor"); iMonitorID.setLastMonitored(new Timestamp((new Date()).getTime())); JobDescriptor jobDescriptor = JobDescriptor.fromXML(iMonitorID.getJobExecutionContext().getJobDetails().getJobDescription()); List<String> stdErr = connection.getCluster().listDirectory(jobDescriptor.getStandardErrorFile()); List<String> stdOut = connection.getCluster().listDirectory(jobDescriptor.getStandardOutFile()); if (stdErr.size() > 0 && stdOut.size() > 0) { + logger.errorId(iMonitorID.getJobID(), "Job monitoring failed {} times, removed job {} from " + + "monitor queue. Experiment {} , task {}", iMonitorID.getFailedCount(), + iMonitorID.getExperimentID(), iMonitorID.getTaskID()); completedJobs.put(iMonitorID.getJobName(), iMonitorID); } - } else { + } else { // Evey iMonitorID.setLastMonitored(new Timestamp((new Date()).getTime())); // if the job is complete we remove it from the Map, if any of these maps @@ -257,7 +260,8 @@ public class HPCPullMonitor extends PullMonitor { } } } else { - logger.debug("Qstat Monitor doesn't handle non-gsissh hosts"); + logger.debug("Qstat Monitor doesn't handle non-gsissh hosts , host {}", iHostMonitorData.getHost() + .getType().getHostAddress()); } } // We have finished all the HostMonitorData object in userMonitorData, now we need to put it back http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/util/CommonUtils.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/util/CommonUtils.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/util/CommonUtils.java index c40d50d..f4b2109 100644 --- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/util/CommonUtils.java +++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/util/CommonUtils.java @@ -21,6 +21,8 @@ package org.apache.airavata.gfac.monitor.util; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.Constants; import org.apache.airavata.commons.gfac.type.HostDescription; @@ -39,8 +41,6 @@ import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooKeeper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.HashMap; @@ -51,7 +51,7 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.CountDownLatch; public class CommonUtils { - private final static Logger logger = LoggerFactory.getLogger(CommonUtils.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(CommonUtils.class); public static boolean isPBSHost(HostDescription host){ if("pbs".equals(((GsisshHostType)host.getType()).getJobManager()) || @@ -106,6 +106,8 @@ public class CommonUtils { if (host.getHost().toXML().equals(monitorID.getHost().toXML())) { // ok we found right place to add this monitorID host.addMonitorIDForHost(monitorID); + logger.debugId(monitorID.getJobID(), "Added new job to the monitoring queue, experiment {}," + + " task {}", monitorID.getExperimentID(), monitorID.getTaskID()); return; } } @@ -114,6 +116,8 @@ public class CommonUtils { HostMonitorData hostMonitorData = new HostMonitorData(monitorID.getHost()); hostMonitorData.addMonitorIDForHost(monitorID); next.addHostMonitorData(hostMonitorData); + logger.debugId(monitorID.getJobID(), "Added new job to the monitoring queue, experiment {}," + + " task {}", monitorID.getExperimentID(), monitorID.getTaskID()); return; } } @@ -124,6 +128,8 @@ public class CommonUtils { userMonitorData.addHostMonitorData(hostMonitorData); try { queue.put(userMonitorData); + logger.debugId(monitorID.getJobID(), "Added new job to the monitoring queue, experiment {}," + + " task {}", monitorID.getExperimentID(), monitorID.getTaskID()); } catch (InterruptedException e) { throw new AiravataMonitorException(e); } @@ -155,13 +161,17 @@ public class CommonUtils { || iMonitorID.getJobName().equals(monitorID.getJobName())) { // OK we found the object, we cannot do list.remove(object) states of two objects // could be different, thats why we check the jobID - logger.info("Removing the job:" + monitorID.getJobID() + " from monitoring last status:" + monitorID.getStatus().toString()); monitorIDs.remove(iMonitorID); + logger.infoId(monitorID.getJobID(), "Removed the job: {} from monitoring last " + + "status:{}", monitorID.getJobID(), monitorID.getStatus().toString()); if (monitorIDs.size() == 0) { hostMonitorData.remove(iHostMonitorID); + logger.debug("Removed host {} from monitoring queue", iHostMonitorID.getHost() + .getType().getHostAddress()); if (hostMonitorData.size() == 0) { // no useful data so we have to remove the element from the queue queue.remove(next); + logger.debug("Removed user {} from monitoring.", next.getUserName()); } } return; http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java index 6d9f259..a892984 100644 --- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java +++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java @@ -27,6 +27,8 @@ import org.airavata.appcatalog.cpi.ComputeResource; import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory; import org.apache.aiaravata.application.catalog.data.resources.AbstractResource; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.Constants; import org.apache.airavata.common.utils.ServerSettings; @@ -51,8 +53,6 @@ import org.apache.airavata.registry.cpi.utils.Constants.FieldConstants.WorkflowN import org.apache.thrift.TException; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -60,7 +60,7 @@ import java.util.*; public class OrchestratorServerHandler implements OrchestratorService.Iface, Watcher { - private static Logger log = LoggerFactory + private static AiravataLogger log = AiravataLoggerFactory .getLogger(OrchestratorServerHandler.class); private SimpleOrchestratorImpl orchestrator = null; @@ -166,8 +166,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, experiment = (Experiment) registry.get( RegistryModelType.EXPERIMENT, experimentId); if (experiment == null) { - log.error("Error retrieving the Experiment by the given experimentID: " - + experimentId); + log.errorId(experimentId, "Error retrieving the Experiment by the given experimentID: {} ", experimentId); return false; } List<String> ids = registry.getIds( @@ -213,12 +212,15 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, try { registry.update(RegistryModelType.EXPERIMENT, experiment, experimentId); - } catch (RegistryException e1) { + } catch (RegistryException e1) { + log.errorId(experimentId, "Couldn't update the status {} of the experiment {}.", + ExperimentState.FAILED.toString(), experimentId); throw new TException(e); } - - throw new TException(e); + log.errorId(experimentId, "Error while launching experiment {}.", experimentId); + throw new TException(e); } + log.infoId(experimentId, "Successfully launched experiment {}.", experimentId); return true; } @@ -256,8 +258,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, Experiment experiment = (Experiment) registry.get( RegistryModelType.EXPERIMENT, experimentId); if (experiment == null) { - log.error("Error retrieving the Experiment by the given experimentID: " - + experimentId); + log.errorId(experimentId, "Error retrieving the Experiment by the given experimentID: {}.", + experimentId); return false; } return orchestrator.validateExperiment(experiment, @@ -266,8 +268,10 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, } } catch (OrchestratorException e) { + log.errorId(experimentId, "Error while validating experiment", e); throw new TException(e); } catch (RegistryException e) { + log.errorId(experimentId, "Error while validating experiment", e); throw new TException(e); } return false; @@ -282,7 +286,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, * @throws TException */ public boolean terminateExperiment(String experimentId) throws TException { - log.info("Experiment: " + experimentId + " is cancelling !!!!!"); + log.infoId(experimentId, "Experiment: {} is cancelling !!!!!", experimentId); return validateStatesAndCancel(experimentId); } @@ -406,9 +410,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, RegistryModelType.TASK_DETAIL, taskId); String applicationId = taskData.getApplicationId(); if (applicationId == null) { - throw new OrchestratorException( - "Error executing the job because there is no Application Name in this Experiment: " - + applicationId); + log.errorId(taskId, "Application id shouldn't be null."); + throw new OrchestratorException("Error executing the job, application id shouldn't be null."); } ApplicationDeploymentDescription applicationDeploymentDescription = getAppDeployment(taskData, applicationId); taskData.setApplicationDeploymentId(applicationDeploymentDescription.getAppDeploymentId()); @@ -429,8 +432,10 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, } } } catch (Exception e) { + log.errorId(taskId, "Error while launching task ", e); throw new TException(e); } + log.infoId(taskId, "No experiment found associated in task {}", taskId); return false; } @@ -491,15 +496,15 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, Experiment experiment = (Experiment) registry.get( RegistryModelType.EXPERIMENT, experimentId); if (experiment == null) { - log.error("Error retrieving the Experiment by the given experimentID: " - + experimentId); - throw new OrchestratorException("Error retrieving the Experiment by the given experimentID:\n" + - experimentId); + log.errorId(experimentId, "Error retrieving the Experiment by the given experimentID: {}.", experimentId); + throw new OrchestratorException("Error retrieving the Experiment by the given experimentID: " + experimentId); } ExperimentState experimentState = experiment.getExperimentStatus().getExperimentState(); - if (experimentState.getValue()> 5 && experimentState.getValue()<10){ - throw new OrchestratorException("Unable to mark experiment as Cancelled, because current state is: " - + experiment.getExperimentStatus().getExperimentState().toString()); + if (experimentState.getValue()> 5 && experimentState.getValue()<10) { + log.errorId(experimentId, "Unable to mark experiment as Cancelled, current state {} doesn't allow to cancel the experiment {}.", + experiment.getExperimentStatus().getExperimentState().toString(), experimentId); + throw new OrchestratorException("Unable to mark experiment as Cancelled, because current state is: " + + experiment.getExperimentStatus().getExperimentState().toString()); }else if(experimentState.getValue()<3){ // when experiment status is < 3 no jobDetails object is created, // so we don't have to worry, we simply have to change the status and stop the execution http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java index 1d0a4a2..7e6a145 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java @@ -21,6 +21,8 @@ package org.apache.airavata.persistance.registry.jpa.impl; +import org.apache.airavata.common.logger.AiravataLogger; +import org.apache.airavata.common.logger.AiravataLoggerFactory; import org.apache.airavata.common.utils.AiravataUtils; import org.apache.airavata.model.workspace.experiment.*; import org.apache.airavata.persistance.registry.jpa.Resource; @@ -33,9 +35,6 @@ import org.apache.airavata.registry.cpi.RegistryException; import org.apache.airavata.registry.cpi.RegistryModelType; import org.apache.airavata.registry.cpi.utils.Constants; import org.apache.airavata.registry.cpi.utils.StatusType; -import org.apache.airavata.schemas.gfac.IntegerArrayType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.sql.Timestamp; import java.util.*; @@ -43,7 +42,7 @@ import java.util.*; public class ExperimentRegistry { private GatewayResource gatewayResource; private WorkerResource workerResource; - private final static Logger logger = LoggerFactory.getLogger(ExperimentRegistry.class); + private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(ExperimentRegistry.class); public ExperimentRegistry(GatewayResource gateway, UserResource user) throws RegistryException { gatewayResource = gateway; @@ -431,8 +430,9 @@ public class ExperimentRegistry { } status.setStatusType(StatusType.EXPERIMENT.toString()); status.save(); + logger.debugId(expId, "Updated experiment {} status to {}.", expId, experimentStatus.toString()); } catch (Exception e) { - logger.error("Error while updating experiment status...", e); + logger.errorId(expId, "Error while updating experiment status...", e); throw new RegistryException(e); } return expId; @@ -474,9 +474,10 @@ public class ExperimentRegistry { statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getWorkflowNodeState().toString()); statusResource.save(); + logger.debugId(nodeId, "Updated workflow node {} status to {}.", nodeId, status.toString()); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { - logger.error("Error whilw updating workflow node status...", e); + logger.errorId(nodeId, "Error while updating workflow node status to " + status.toString() + "...", e); throw new RegistryException(e); } } @@ -523,8 +524,9 @@ public class ExperimentRegistry { statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getExecutionState().toString()); statusResource.save(); + logger.infoId(taskId, "Updated task {} status to {}.", taskId, status.toString()); } catch (Exception e) { - logger.error("Error while updating task status...", e); + logger.errorId(taskId, "Error while updating task status to " + status.toString() + "...", e); throw new RegistryException(e); } } @@ -575,9 +577,10 @@ public class ExperimentRegistry { statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getJobState().toString()); statusResource.save(); + logger.infoId(ids.toString(), "Updated job status to {}", status.toString()); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { - logger.error("Error while updating job status...", e); + logger.errorId(ids.toString(), "Error while updating job status to " + status.toString() + " ...", e); throw new RegistryException(e); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/595be55f/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/CompositeIdentifier.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/CompositeIdentifier.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/CompositeIdentifier.java index 0234aa3..fee8aec 100644 --- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/CompositeIdentifier.java +++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/CompositeIdentifier.java @@ -41,4 +41,16 @@ public class CompositeIdentifier { public Object getSecondLevelIdentifier() { return secondLevelIdentifier; } + + @Override + public String toString() { + if (topLevelIdentifier instanceof String && secondLevelIdentifier instanceof String) { + return topLevelIdentifier + "," + secondLevelIdentifier; + }else if (topLevelIdentifier instanceof String ) { + return topLevelIdentifier.toString(); + } else { + return secondLevelIdentifier.toString(); + } + + } }
