|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecteu.xtreemos.system.eventmachine.stage.AbstractStage
eu.xtreemos.system.eventmachine.stage.AbstractReceivingStage
eu.xtreemos.system.eventmachine.stage.Abstract2wayStage
eu.xtreemos.xosd.execMng.ExecMng
public class ExecMng
Execution Manager is in charge of the processes running in his node It keeps a list of JobUnits indexed by JobId In each jobUnit is kept the information of the job (pids, jobMngAddr...)
Nested Class Summary | |
---|---|
class |
ExecMng.ExecMngEvent
|
private class |
ExecMng.JobsResInfo
Class to keep callback information when obtaining information of the jobs running in the resource (getJobsResource) pendent is a counter of the remaining answers info is the string containing the information already obtained |
class |
ExecMng.startJobParams
|
Field Summary | |
---|---|
(package private) static int |
BASIC
|
(package private) static int |
JOB_DEFINITION
|
private java.util.Hashtable<java.lang.Integer,java.lang.String> |
jobPid
|
private java.util.Hashtable<java.lang.String,JobUnit> |
jobUnits
|
private java.util.Hashtable<java.lang.Integer,java.lang.Long> |
lastTimestamp
|
(package private) static org.apache.log4j.Logger |
logger
|
private eu.xtreemos.xosd.utilities.metrics.JobMetrics |
metrics
|
private eu.xtreemos.xosd.utilities.metrics.ProcMetricsData |
metricsData
|
private java.util.Hashtable<ExecMng.ExecMngEvent,java.lang.Integer> |
PendingEvents
|
(package private) static int |
RESOURCES_ALLOCATED
|
(package private) static int |
RESOURCES_CONSUMED
|
(package private) static org.apache.log4j.Logger |
tracer
|
(package private) static int |
USER_METRICS
|
private int |
XOS_SIG_CHLD
|
Fields inherited from class eu.xtreemos.system.eventmachine.stage.Abstract2wayStage |
---|
context, counter, curContext, sink |
Fields inherited from class eu.xtreemos.system.eventmachine.stage.AbstractReceivingStage |
---|
queue |
Fields inherited from class eu.xtreemos.system.eventmachine.stage.AbstractStage |
---|
handlerChain, handlerGroup, handlerThreads, name, running, serviceListeners |
Constructor Summary | |
---|---|
ExecMng()
Constructor |
Method Summary | |
---|---|
java.lang.Integer |
addJobMetric(java.lang.String jobId,
eu.xtreemos.xosd.utilities.metrics.MetricsDesc metric)
|
void |
assignProcessesToJobAtRestart(java.lang.String jobId,
java.lang.String procListString)
|
java.lang.Integer |
createProcess(java.lang.String jobId,
java.lang.String JSDL,
java.lang.String reservationId,
CommunicationAddress resource,
java.security.cert.X509Certificate userCtx)
It is supposed to be "similar" to a fork but in XOS. |
private java.lang.Integer |
execJob(JobUnit ju)
|
private int |
execJobParams(java.lang.String jobID,
java.lang.String path,
java.lang.String input,
java.lang.String output,
java.lang.String error,
java.lang.String[] params,
java.lang.String[] env_var,
java.lang.String userCert)
Execute Job with the given parameters |
void |
exitJob(java.lang.String jobId,
java.lang.Integer exitValue)
|
java.lang.String |
getHandledEventType()
|
java.lang.String |
getJobInfoCB(java.lang.String info)
|
java.lang.String |
getJobSelf(java.lang.Integer pid)
Retunr the JobId of the calling process (identified by its pid) |
java.lang.String |
getJobsResource(java.security.cert.X509Certificate certificate)
Return the information of the jobs running in this resource TODO Is that a required feature? |
void |
getProcessList(java.lang.String jobId,
java.lang.String initialJobId,
java.lang.String jsdlFile,
java.lang.String jobUnitID,
java.util.ArrayList<java.lang.String> dependentJobs,
java.lang.String executable,
CommunicationAddress jobCpAddr,
CommunicationAddress superJobCpAddr,
java.lang.String kernelCheckpointer,
java.lang.String checkpointVersion,
java.lang.String pidCGroupName,
java.lang.String strategy,
java.lang.String options,
java.lang.String mode,
java.security.cert.X509Certificate userCert)
get a process from the job unit - for kernel checkpointer to determine process group it uses for cp/rst |
java.lang.String |
getProcsInfo(java.lang.String jobId,
java.lang.Integer flags,
java.lang.Integer infoLevel,
java.util.ArrayList<java.lang.String> metricsList,
java.lang.String user)
|
java.util.ArrayList<java.lang.Integer> |
getProcsJob(java.lang.String jobId)
|
private void |
getProcStatus(java.lang.Integer pid)
Temporary monitoring daemon patch. |
private int |
getSIG_CHLD()
Get the value of the SIG_CHLD |
void |
handleEvent(java.lang.Object event)
|
void |
handleProcStatus(int pid,
boolean enable)
|
private java.lang.Integer |
inheritMetricsAndStart(JobUnit ju)
This method is part of the startJob/startProcess workflow, whenever a new jobUnit is created. |
java.lang.Integer |
inheritMetricsCB(java.util.ArrayList<eu.xtreemos.xosd.utilities.metrics.MetricsDesc> metricsList)
This method receives a list of metrics from jobMng, stores them in its corresponding structure for the job and sets initial values for some of them. |
void |
init()
|
private void |
newEvent(java.lang.String jobId,
java.lang.String event,
int pid,
int ppid,
int exitValue)
Receive a notification of a new event |
private int |
pidWait(int pid)
Do the wait on the pid (prevent defunct) |
private void |
processEvent(java.lang.String jobId,
java.lang.String event,
int pid,
int ppid,
int exitValue)
New event TODO: update this javadoc |
void |
rebuildJobUnit(java.lang.String jobId,
java.lang.String initialJobId,
java.lang.String jobUnitId,
java.lang.String checkpointVersion,
CommunicationAddress jobMngAddr,
java.lang.String processGroupReferenceId,
java.lang.String processGroupReferenceType,
java.lang.String pidCGroupName,
java.lang.String kernelCheckpointer,
java.lang.String jsdlFile,
java.lang.String input,
java.lang.String output,
java.lang.String cmd,
java.lang.String error,
java.security.cert.X509Certificate userCert)
|
void |
removeBuffers(java.lang.String jobId)
To be called from jobMng whenever it's cleaning time. |
java.lang.Integer |
removeJobMetric(java.lang.String jobId,
java.lang.String metricName)
|
void |
removeJobMetrics(java.lang.String jobId)
JobUnit scope Removes metrics data, but leaves metadata and buffers. |
void |
removeProcMetrics(java.lang.String jobId,
java.lang.Integer pid)
Process scope Removes metrics data, but leaves metadata and buffers. |
java.lang.Object |
returnCB(java.lang.Object obj)
|
java.lang.Object |
returnCBE(java.lang.Exception ex)
|
java.lang.Integer |
sendEvent(java.lang.String jobId,
java.lang.Integer signal)
|
private int |
sendSignal(int pid,
int signal)
Send a signal to a process |
private void |
sendXOS_SIGCHLD(java.lang.String jobId)
|
java.lang.Integer |
setMetricValue(java.lang.String jobId,
java.lang.String metricName,
java.lang.Integer pid,
java.lang.String value)
|
java.lang.Integer |
setMonitoringBuffering(java.lang.String jobId,
java.lang.String metricName,
java.lang.Integer pid,
java.lang.Boolean enable,
java.lang.String user)
TODO update to setMonitorBuffering semantics, if required. |
java.lang.Integer |
startJob(java.lang.String jobId,
CommunicationAddress jobMngAddr,
java.lang.String command,
java.lang.Object params_aux,
java.lang.Object env_aux,
java.lang.String output,
java.lang.String error,
java.lang.String input,
java.security.cert.X509Certificate userCtx)
Starts running a job already created |
java.lang.Integer |
startProcess(java.lang.String jobId,
CommunicationAddress jobMngAddr,
java.lang.String command,
java.lang.Object params_aux,
java.lang.Object env_aux,
java.lang.String output,
java.lang.String error,
java.lang.String input,
java.security.cert.X509Certificate userCtx)
Starts a new process, might create a new jobUnit if it's the first one of the job in this resource. |
private void |
startReceiving()
Initialize the system to receive events from the processes Must be called when starts the execMng |
void |
updateJobMetric(java.lang.String jobId,
eu.xtreemos.xosd.utilities.metrics.MetricsDesc metric)
|
private void |
waitJobEvent()
Wait for an event from the running processes is a blocking call and must be called in a new thread |
private void |
waitJobsEvents()
Wait for the events from the running processes this function never returns. |
Methods inherited from class eu.xtreemos.system.eventmachine.stage.Abstract2wayStage |
---|
getContext, removeContext, SendException, SendException, SendException, SendReply, SendReply, SendReply, setSink |
Methods inherited from class eu.xtreemos.system.eventmachine.stage.AbstractReceivingStage |
---|
dequeue, getSource |
Methods inherited from class eu.xtreemos.system.eventmachine.stage.AbstractStage |
---|
addHandler, addHandler, addServiceListener, getName, getShortName, getThreadCount, notifyServiceInitialised, notifyServiceStarted, notifyServiceStopped, processEvent, removeHandler, removeServiceListener, setThreadCount, start, stop |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.util.Hashtable<java.lang.String,JobUnit> jobUnits
private java.util.Hashtable<java.lang.Integer,java.lang.String> jobPid
private java.util.Hashtable<ExecMng.ExecMngEvent,java.lang.Integer> PendingEvents
private java.util.Hashtable<java.lang.Integer,java.lang.Long> lastTimestamp
static final int BASIC
static final int JOB_DEFINITION
static final int RESOURCES_ALLOCATED
static final int RESOURCES_CONSUMED
static final int USER_METRICS
private eu.xtreemos.xosd.utilities.metrics.JobMetrics metrics
private eu.xtreemos.xosd.utilities.metrics.ProcMetricsData metricsData
static final org.apache.log4j.Logger logger
static final org.apache.log4j.Logger tracer
private int XOS_SIG_CHLD
Constructor Detail |
---|
public ExecMng()
Method Detail |
---|
private int execJobParams(java.lang.String jobID, java.lang.String path, java.lang.String input, java.lang.String output, java.lang.String error, java.lang.String[] params, java.lang.String[] env_var, java.lang.String userCert)
jobID
- of the jobpath
- to the executableinput
- path to the file for the standard inputoutput
- path to the file for the standard outputerror
- path to the file for the standard errorparams
- parameters of the jobenv_var
- environment variables of the job
private void startReceiving()
private void waitJobEvent()
private int sendSignal(int pid, int signal)
pid
- of the process to send the signalsignal
- number of signal to send to the process
private int getSIG_CHLD()
private int pidWait(int pid)
pid
- of the process to send the signal
public void init()
init
in interface eu.xtreemos.system.eventmachine.stage.IStage
init
in class eu.xtreemos.system.eventmachine.stage.AbstractStage
private void waitJobsEvents()
private void newEvent(java.lang.String jobId, java.lang.String event, int pid, int ppid, int exitValue)
jobId
- of the job that owes the process that generated the eventevent
- code of the raised event:
NP: New Process
EP: Exited Process
JF: Job Finishedpid
- of the process that raised the eventexitValue
- in the case of an Exited process or job Finishedprivate void processEvent(java.lang.String jobId, java.lang.String event, int pid, int ppid, int exitValue)
jobId
- of the job that owes the process that generated the eventevent
- code of the raised event:
NP: New Process
EP: Exited Process
JF: Job Finishedpid
- of the process that raised the eventexitValue
- in the case of an Exited process or job Finishedpublic java.lang.Integer inheritMetricsCB(java.util.ArrayList<eu.xtreemos.xosd.utilities.metrics.MetricsDesc> metricsList)
metricsList
- an ArrayList of metrics that the job needs to
handle.
private java.lang.Integer inheritMetricsAndStart(JobUnit ju)
ju
- a JobUnit describing the newly created job in this context
public java.lang.Integer startJob(java.lang.String jobId, CommunicationAddress jobMngAddr, java.lang.String command, java.lang.Object params_aux, java.lang.Object env_aux, java.lang.String output, java.lang.String error, java.lang.String input, java.security.cert.X509Certificate userCtx)
private java.lang.Integer execJob(JobUnit ju)
public java.lang.Integer startProcess(java.lang.String jobId, CommunicationAddress jobMngAddr, java.lang.String command, java.lang.Object params_aux, java.lang.Object env_aux, java.lang.String output, java.lang.String error, java.lang.String input, java.security.cert.X509Certificate userCtx)
public java.util.ArrayList<java.lang.Integer> getProcsJob(java.lang.String jobId)
public java.lang.Integer addJobMetric(java.lang.String jobId, eu.xtreemos.xosd.utilities.metrics.MetricsDesc metric)
public void updateJobMetric(java.lang.String jobId, eu.xtreemos.xosd.utilities.metrics.MetricsDesc metric)
public java.lang.Integer removeJobMetric(java.lang.String jobId, java.lang.String metricName)
jobId
- metricName
-
public void removeJobMetrics(java.lang.String jobId)
jobId
- public void removeProcMetrics(java.lang.String jobId, java.lang.Integer pid)
jobId
- pid
- public void removeBuffers(java.lang.String jobId)
jobId
- public java.lang.Integer setMetricValue(java.lang.String jobId, java.lang.String metricName, java.lang.Integer pid, java.lang.String value)
jobId
- metricName
- pid
- value
-
public java.lang.Integer setMonitoringBuffering(java.lang.String jobId, java.lang.String metricName, java.lang.Integer pid, java.lang.Boolean enable, java.lang.String user)
jobId
- metricName
- pid
- should be null if it's not a process scope metricenable
- user
-
public void handleProcStatus(int pid, boolean enable)
private void getProcStatus(java.lang.Integer pid)
Integer
- with the pid of the process to monitorpublic java.lang.String getProcsInfo(java.lang.String jobId, java.lang.Integer flags, java.lang.Integer infoLevel, java.util.ArrayList<java.lang.String> metricsList, java.lang.String user)
public java.lang.Integer sendEvent(java.lang.String jobId, java.lang.Integer signal)
public java.lang.String getJobsResource(java.security.cert.X509Certificate certificate)
public java.lang.String getJobInfoCB(java.lang.String info)
public void exitJob(java.lang.String jobId, java.lang.Integer exitValue)
public java.lang.Integer createProcess(java.lang.String jobId, java.lang.String JSDL, java.lang.String reservationId, CommunicationAddress resource, java.security.cert.X509Certificate userCtx) throws org.xml.sax.SAXException, java.io.IOException
jobId
- JSDL
- reservationId
- resource
- userCtx
-
org.xml.sax.SAXException
java.io.IOException
private void sendXOS_SIGCHLD(java.lang.String jobId)
public java.lang.Object returnCB(java.lang.Object obj)
public java.lang.Object returnCBE(java.lang.Exception ex) throws java.lang.Exception
java.lang.Exception
public void getProcessList(java.lang.String jobId, java.lang.String initialJobId, java.lang.String jsdlFile, java.lang.String jobUnitID, java.util.ArrayList<java.lang.String> dependentJobs, java.lang.String executable, CommunicationAddress jobCpAddr, CommunicationAddress superJobCpAddr, java.lang.String kernelCheckpointer, java.lang.String checkpointVersion, java.lang.String pidCGroupName, java.lang.String strategy, java.lang.String options, java.lang.String mode, java.security.cert.X509Certificate userCert)
public void rebuildJobUnit(java.lang.String jobId, java.lang.String initialJobId, java.lang.String jobUnitId, java.lang.String checkpointVersion, CommunicationAddress jobMngAddr, java.lang.String processGroupReferenceId, java.lang.String processGroupReferenceType, java.lang.String pidCGroupName, java.lang.String kernelCheckpointer, java.lang.String jsdlFile, java.lang.String input, java.lang.String output, java.lang.String cmd, java.lang.String error, java.security.cert.X509Certificate userCert) throws java.lang.Exception
jobId
- jobMngAddr
-
java.lang.Exception
public void assignProcessesToJobAtRestart(java.lang.String jobId, java.lang.String procListString)
public java.lang.String getJobSelf(java.lang.Integer pid)
pid
- of the calling process
public void handleEvent(java.lang.Object event) throws java.lang.Exception
handleEvent
in interface eu.xtreemos.system.eventmachine.queue.IEventHandler
handleEvent
in class eu.xtreemos.system.eventmachine.stage.AbstractReceivingStage
java.lang.Exception
public java.lang.String getHandledEventType()
getHandledEventType
in class eu.xtreemos.system.eventmachine.stage.AbstractReceivingStage
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |