OpendTect  6.3
jobrunner.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H.Bril
8  Date: Oct 2004
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "mmprocmod.h"
14 #include "executor.h"
15 #include "jobinfo.h"
16 
17 class BufferStringSet;
18 class HostData;
19 class JobDescProv;
20 class JobIOMgr;
21 class StatusInfo;
22 namespace File { class Path; }
23 
29 { mODTextTranslationClass(HostNFailInfo);
30 public:
31  HostNFailInfo( const HostData& hd )
32  : hostdata_(hd)
33  , nrfailures_(0)
34  , nrsucces_(0)
35  , lastsuccess_(0)
36  , starttime_(0)
37  , inuse_(false) {}
38 
41  int nrsucces_;
42  int starttime_;
44  bool inuse_;
45 };
46 
47 
54 public:
55 
56  JobRunner(JobDescProv*,const char* cmd,
57  od_ostream* logstrm=0);
59  ~JobRunner();
60 
61  const JobDescProv* descProv() const { return descprov_; }
62 
63  const ObjectSet<HostNFailInfo>& hostInfo() const { return hostinfo_; }
64  bool addHost(const HostData&);
65  void removeHost(int);
66  void pauseHost(int,bool);
67  bool stopAll();
68  bool hostFailed(int) const;
69  bool isPaused(int) const;
70  bool isAssigned( const JobInfo& ji ) const;
71 
72  int nrJobs( bool failed=false ) const
73  { return (failed ? failedjobs_ : jobinfos_)
74  .size(); }
75  const JobInfo& jobInfo( int idx, bool failed=false ) const
76  { return *(failed ? failedjobs_ : jobinfos_)
77  [idx]; }
78 
79  int jobsDone() const;
80  int jobsInProgress() const;
81  int jobsLeft() const
82  { return jobinfos_.size() - jobsDone(); }
83  int totalJobs() const
84  { return jobinfos_.size()+failedjobs_.size(); }
85  JobInfo* currentJob(const HostNFailInfo*) const;
86 
87  int nextStep() { return doCycle(); }
88  od_int64 nrDone() const { return jobsDone(); }
89  od_int64 totalNr() const { return totalJobs(); }
90  uiString message() const;
91  uiString nrDoneText() const;
92 
93  // Set these before first step
94  void setFirstPort( int n ) { firstport_ = n; }
95  void setRshComm( const char* s ) { rshcomm_ = s; }
96  void setProg( const char* s ) { prog_ = s; }
97  // Set this anytime
98  void setPriority(float);
99 
100  void showMachStatus( BufferStringSet& ) const;
101  const File::Path& getBaseFilePath(JobInfo&, const HostData&);
102 
107 
108  const JobInfo& curJobInfo() const { return *curjobinfo_; }
109  IOPar& curJobIOPar() { return curjobiop_; }
110  const File::Path& curJobFilePath() { return curjobfp_; }
111 
112  const char* procDir() const { return procdir_.buf(); }
113  // processing directory on local machine
114  uiString errorMsg() const;
115 
116 protected:
117 
128 
129  JobIOMgr& iomgr();
131 
144 
145  int doCycle();
146  HostNFailInfo* hostNFailInfoFor(const HostData*) const;
147 
148  void updateJobInfo();
149  void handleStatusInfo( StatusInfo& );
150  JobInfo* gtJob( int descnr );
151 
152  void failedJob( JobInfo&, JobInfo::State );
153 
154  enum StartRes { Started, NotStarted, JobBad, HostBad };
155  StartRes startJob( JobInfo& ji, HostNFailInfo& jhi );
156  bool runJob(JobInfo&,const HostData&);
157 
158 
159  enum AssignStat { NotReady, BadHost, JobStarted, NoJobs };
160  AssignStat assignJob(HostNFailInfo&);
161  bool haveIncomplete() const;
162 
163  enum HostStat { OK = 0, SomeFailed = 1, HostFailed = 2 };
164  HostStat hostStatus(const HostNFailInfo*) const;
165 
166 };
167 
#define mExpClass(module)
Definition: commondefs.h:157
Interface for several file and directory related services.
Definition: file.h:29
const File::Path & curJobFilePath()
Definition: jobrunner.h:110
int nextStep()
Definition: jobrunner.h:87
od_int64 totalNr() const
Definition: jobrunner.h:89
int nrJobs(bool failed=false) const
Definition: jobrunner.h:72
const JobInfo & curJobInfo() const
Definition: jobrunner.h:108
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
IOPar & curJobIOPar()
Definition: jobrunner.h:109
uiString errmsg_
Definition: jobrunner.h:143
int failtimeout_
Definition: jobrunner.h:139
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
void setRshComm(const char *s)
Definition: jobrunner.h:95
int nrfailures_
Reset to 0 at every success.
Definition: jobrunner.h:40
#define mGlobal(module)
Definition: commondefs.h:160
Encapsulates status message from a running client.
Definition: jobiomgr.h:38
File::Path & curjobfp_
Definition: jobrunner.h:124
BufferString rshcomm_
Definition: jobrunner.h:134
#define od_int64
Definition: plftypes.h:34
JobInfo * curjobinfo_
Definition: jobrunner.h:126
Definition: jobrunner.h:159
int wrapuptimeout_
Definition: jobrunner.h:140
int & MMJob_getTempFileNr()
Handles starting & stopping of jobs on client machines. Sets up a separate thread to maintain contact...
Definition: jobiomgr.h:62
File pathname tools.
Definition: filepath.h:35
int starttime_
Set whenever host added.
Definition: jobrunner.h:42
Definition: uistring.h:88
od_ostream * logstrm_
Definition: jobrunner.h:127
int starttimeout_
Definition: jobrunner.h:138
const JobDescProv * descProv() const
Definition: jobrunner.h:61
Set of BufferString objects.
Definition: bufstringset.h:25
const ObjectSet< HostNFailInfo > & hostInfo() const
Definition: jobrunner.h:63
int hosttimeout_
Definition: jobrunner.h:141
BufferString procdir_
Definition: jobrunner.h:123
int maxhostfailures_
host failrs B4 host bad
Definition: jobrunner.h:135
JobDescProv * descprov_
Definition: jobrunner.h:118
int jobsLeft() const
Definition: jobrunner.h:81
HostStat
Definition: jobrunner.h:163
void message(const char *)
default: to stderr
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Interface for providing parameter files for jobs (job descriptions). Two implementations are pre-cook...
Definition: jobdescprov.h:25
Notifier< JobRunner > postJobStart
Definition: jobrunner.h:104
AssignStat
Definition: jobrunner.h:159
bool inuse_
Definition: jobrunner.h:44
int firstport_
Definition: jobrunner.h:133
Multi Machine Processing.
Definition: mmassetmgr.h:21
const char * procDir() const
Definition: jobrunner.h:112
Holds host-specific status information.
Definition: jobrunner.h:28
ObjectSet< JobInfo > jobinfos_
Definition: jobrunner.h:119
ObjectSet< HostNFailInfo > hostinfo_
Definition: jobrunner.h:120
const HostData & hostdata_
Definition: jobrunner.h:39
Notifier< JobRunner > msgAvail
Definition: jobrunner.h:106
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
IOPar & curjobiop_
Definition: jobrunner.h:125
int startwaittime_
wait B4 next client start
Definition: jobrunner.h:142
int totalJobs() const
Definition: jobrunner.h:83
Runs all jobs defined by JobDescProv.
Definition: jobrunner.h:52
BufferString prog_
Definition: jobrunner.h:122
int maxjobfailures_
job related job failrs
Definition: jobrunner.h:136
int maxjobhstfails_
host related job failrs
Definition: jobrunner.h:137
Notifier< JobRunner > preJobStart
Definition: jobrunner.h:103
HostNFailInfo(const HostData &hd)
Definition: jobrunner.h:31
int nrsucces_
Definition: jobrunner.h:41
Host name and aliases.
Definition: hostdata.h:34
od_int64 nrDone() const
Definition: jobrunner.h:88
StartRes
Definition: jobrunner.h:154
ObjectSet< JobInfo > failedjobs_
Definition: jobrunner.h:121
JobIOMgr * iomgr_
Definition: jobrunner.h:130
void setFirstPort(int n)
Definition: jobrunner.h:94
void setProg(const char *s)
Definition: jobrunner.h:96
All information on a job.
Definition: jobinfo.h:22
int lastsuccess_
timestamp
Definition: jobrunner.h:43
Notifier< JobRunner > jobFailed
Definition: jobrunner.h:105
float prioritylevel_
Definition: jobrunner.h:132
Specification to enable chunkwise execution of a process.
Definition: executor.h:38
State
Definition: jobinfo.h:27
const JobInfo & jobInfo(int idx, bool failed=false) const
Definition: jobrunner.h:75

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017