55 fLogFile = (logfile) ? logfile : stdout;
82 if ((lnow = lseek(fileno(
fLogFile), (off_t) 0, SEEK_CUR)) < 0) {
83 Error(
"AddLogFile",
"problems lseeking current position on log file (errno: %d)", errno);
90 lseek(fileno(
fLogFile), (off_t) start, SEEK_SET);
93 const Int_t kMAXBUF = 4096;
102 if (lnow >= 0) lseek(fileno(
fLogFile), lnow, SEEK_SET);
127 if (strlen(sess) < 7 || strncmp(sess,
"session",7))
136 qdir.
Form(
"%s/%s", queriesdir.
Data(), sess);
138 Info(
"RemoveQuery",
"removing directory: %s", qdir.
Data());
145 Warning(
"RemoveQuery",
"cannot open queries directory: %s", queriesdir.
Data());
171 if (strlen(sess) < 7 || strncmp(sess,
"session",7))
188 TString fn =
Form(
"%s/%s/%s/query-result.root", dir, sess, qry);
192 TIter nxk(
f->GetListOfKeys());
195 while ((k = (
TKey *)nxk())) {
216 Warning(
"ScanPreviousQueries",
"unable to clone TProofQueryResult '%s:%s'",
263 if (strlen(sess) < 7 || strncmp(sess,
"session",7))
281 TString fn =
Form(
"%s/%s/%s/query-result.root", dir.
Data(), sess, qry);
286 Info(
"ApplyMaxQueries",
"file '%s' cannot be stated: remove it", fn.
Data());
355 Error(
"LockSession",
"locker space undefined");
362 TRegexp re(
"session-.*-.*-.*-.*");
365 Error(
"LockSession",
"bad format: %s", sessiontag);
377 parlog = parlog.
Remove(parlog.
Index(
"master-")+strlen(
"master-"));
381 Info(
"LockSession",
"parent still running: do nothing");
392 if (((*lck)->Lock()) < 0) {
393 Error(
"LockSession",
"problems locking query lock file");
410 Error(
"CleanupSession",
"session tag undefined");
421 Info(
"CleanupSession",
"query dir %s does not exist", qdir.
Data());
442 Info(
"CleanupSession",
"could not lock session %s", sessiontag);
461 TString ofn = fout ? fout :
Form(
"%s/query-result.root", querydir.
Data());
482 Info(
"RemoveQuery",
"Enter");
492 if (otherlist) otherlist->
Add(pqr);
501 Info(
"RemoveQuery",
"removing directory: %s", qdir.
Data());
515 Info(
"RemoveQuery",
"Enter");
525 Info(
"RemoveQuery",
"removing directory: %s", qdir.
Data());
557 qry = queryref.
Atoi();
562 qry = queryref.
Atoi();
571 Info(
"LocateQuery",
"local query: %d", qry);
587 Info(
"LocateQuery",
"previously processed query: %s", queryref.
Data());
615 if (!pq || !proof || !player) {
616 Warning(
"FinalizeQuery",
"bad inputs: query = %p, proof = %p, player: %p ",
617 pq ? pq : 0, proof ? proof : 0, player ? player : 0);
631 PDB(kGlobal, 2)
Info(
"FinalizeQuery",
"query #%d", qn);
634 Info(
"FinalizeQuery",
"%.1f %lld", cpu, bytes);
641 Info(
"FinalizeQuery",
"query %d has been ABORTED <====", qn);
647 Info(
"FinalizeQuery",
648 "query %d has been STOPPED: %lld events processed", qn, np);
653 Info(
"FinalizeQuery",
654 "query %d has been completed: %lld events processed", qn, np);
659 "query %d: unknown exit status (%d)", qn, player->
GetExitStatus());
666 Info(
"FinalizeQuery",
"cpu: %.4f, saved: %.4f, master: %.4f",
704 if (!farc && !fcom) {
722 emsg.
Form(
"Too many saved queries (%d): cannot save %s:%s",
const Bool_t kIterBackward
R__EXTERN TProofServ * gProofServ
const char *const kPROOF_QueryDir
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Create / open a file.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
TObject * FindObject(const char *name) const
Find object using its name.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual const char * GetClassName() const
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual void AddAt(TObject *obj, Int_t idx)
Insert object at position idx in the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
The TNamed class is the base class for all named ROOT classes.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Collectable string class.
const char * GetName() const
Returns name of object.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Named parameter, streamable and storable.
void SetVal(const AParamType &val)
const AParamType & GetVal() const
TQueryResult version adapted to PROOF neeeds.
void SetResultFile(const char *rf)
void RecordEnd(EQueryStatus status, TList *outlist=0)
End of query settings.
void SendAsynMessage(const char *msg, Bool_t lf=kTRUE)
Send an asychronous message to the master / client .
This class controls a Parallel ROOT Facility, PROOF, cluster.
Float_t GetCpuTime() const
Long64_t GetBytesRead() const
void SaveQuery(TProofQueryResult *qr, const char *fout=0)
Save current status of query 'qr' to file name fout.
Bool_t FinalizeQuery(TProofQueryResult *pq, TProof *proof, TVirtualProofPlayer *player)
Final steps after Process() to complete the TQueryResult instance.
void RemoveQuery(TQueryResult *qr, Bool_t soft=kFALSE)
Remove everything about query qr.
virtual ~TQueryResultManager()
Cleanup.
Int_t CleanupQueriesDir()
Remove all queries results referring to previous sessions.
Int_t ApplyMaxQueries(Int_t mxq)
Scan the queries directory and remove the oldest ones (and relative dirs, if empty) in such a way onl...
TProofQueryResult * LocateQuery(TString queryref, Int_t &qry, TString &qdir)
Locate query referenced by queryref.
Int_t CleanupSession(const char *sessiontag)
Cleanup query dir qdir.
TQueryResultManager(const char *qdir, const char *stag, const char *sdir, TProofLockPath *lck, FILE *logfile=0)
Constructor.
Int_t LockSession(const char *sessiontag, TProofLockPath **lck)
Try locking query area of session tagged sessiontag.
void AddLogFile(TProofQueryResult *pq)
Add part of log file concerning TQueryResult pq to its macro container.
void ScanPreviousQueries(const char *dir)
Scan the queries directory for the results of previous queries.
A container class for query results.
void AddLogLine(const char *logline)
Fill log file.
TQueryResult * CloneInfo()
Return an instance of TQueryResult containing only the local info fields, i.e.
virtual void SetProcessInfo(Long64_t ent, Float_t cpu=0., Long64_t siz=-1, Float_t inittime=0., Float_t proctime=0.)
Set processing info.
EQueryStatus GetStatus() const
Float_t GetUsedCPU() const
Bool_t IsArchived() const
Regular expression class.
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.
A sorted doubly linked list.
void Add(TObject *obj)
Add object in sorted list.
Int_t Atoi() const
Return integer value of string.
const char * Data() const
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
TString & ReplaceAll(const TString &s1, const TString &s2)
TString & Remove(Ssiz_t pos)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
virtual void FreeDirectory(void *dirp)
Free a directory.
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
virtual int MakeDirectory(const char *name)
Make a directory.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
virtual int Unlink(const char *name)
Unlink, i.e.
Abstract interface for the PROOF player.
virtual Long64_t GetEventsProcessed() const =0
virtual EExitStatus GetExitStatus() const =0
virtual TList * GetOutputList() const =0
static constexpr double nm