Logo ROOT  
Reference Guide
TProofServ.h
Go to the documentation of this file.
1// @(#)root/proof:$Id$
2// Author: Fons Rademakers 16/02/97
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12
13#ifndef ROOT_TProofServ
14#define ROOT_TProofServ
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TProofServ //
19// //
20// TProofServ is the PROOF server. It can act either as the master //
21// server or as a slave server, depending on its startup arguments. It //
22// receives and handles message coming from the client or from the //
23// master server. //
24// //
25//////////////////////////////////////////////////////////////////////////
26
27#include "TApplication.h"
28#include "TString.h"
29#include "TSysEvtHandler.h"
30#include "TStopwatch.h"
31#include "TTimer.h"
32#include "TPackMgr.h"
33#include "TProofQueryResult.h"
34
35#include <mutex>
36
37class TDataSetManager;
39class TDSet;
40class TDSetElement;
41class TFileCollection;
42class TFileHandler;
43class THashList;
44class TIdleTOTimer;
45class TList;
46class TMap;
47class TMessage;
48class TMonitor;
49class TPackMgr;
50class TProof;
51class TProofLockPath;
53class TReaperTimer;
54class TServerSocket;
55class TShutdownTimer;
56class TSocket;
58
59// Hook to external function setting up authentication related stuff
60// for old versions.
61// For backward compatibility
63 TString &, TString &, TString &);
64
65
66class TProofServ : public TApplication {
67
68friend class TProofServLite;
69friend class TXProofServ;
70
71public:
72 enum EStatusBits { kHighMemory = BIT(17) };
74
75private:
76 TString fService; //service we are running, either "proofserv" or "proofslave"
77 TString fUser; //user as which we run
78 TString fGroup; //group the user belongs to
79 TString fConfDir; //directory containing cluster config information
80 TString fConfFile; //file containing config information
81 TString fWorkDir; //directory containing all proof related info
82 TString fImage; //image name of the session
83 TString fSessionTag; //tag for the server session
84 TString fTopSessionTag; //tag for the global session
85 TString fSessionDir; //directory containing session dependent files
86 TPackMgr *fPackMgr; // Default package manager
87 TString fCacheDir; //directory containing cache of user files
88 TString fQueryDir; //directory containing query results and status
89 TString fDataSetDir; //directory containing info about known data sets
90 TString fDataDir; //directory containing data files produced during queries
91 TString fDataDirOpts; //Url type options for fDataDir
92 TString fAdminPath; //admin path for this session
93 TString fOutputFile; //path with the temporary results of the current or last query
94 TProofLockPath *fCacheLock; //cache dir locker
95 TProofLockPath *fQueryLock; //query dir locker
96 TString fArchivePath; //default archive path
97 TSocket *fSocket; //socket connection to client
98 TProof *fProof; //PROOF talking to slave servers
99 TVirtualProofPlayer *fPlayer; //actual player
100 FILE *fLogFile; //log file
101 Int_t fLogFileDes; //log file descriptor
102 Long64_t fLogFileMaxSize; //max size for log files (enabled if > 0)
103 Int_t fProtocol; //protocol version number
104 TString fOrdinal; //slave ordinal number
105 Int_t fGroupId; //slave unique id in the active slave group
106 Int_t fGroupSize; //size of the active slave group
107 Int_t fLogLevel; //debug logging level
108 Int_t fNcmd; //command history number
109 Int_t fGroupPriority; //priority of group the user belongs to (0 - 100)
110 Bool_t fEndMaster; //true for a master in direct contact only with workers
111 Bool_t fMasterServ; //true if we are a master server
112 Bool_t fInterrupt; //if true macro execution will be stopped
113 Float_t fRealTime; //real time spent executing commands
114 Float_t fCpuTime; //CPU time spent executing commands
115 TStopwatch fLatency; //measures latency of packet requests
116 TStopwatch fCompute; //measures time spent processing a packet
117 TStopwatch fSaveOutput; //measures time spent saving the partial result
118 Int_t fQuerySeqNum; //sequential number of the current or last query
119
120 Int_t fTotSessions; //Total number of PROOF sessions on the cluster
121 Int_t fActSessions; //Total number of active PROOF sessions on the cluster
122 Float_t fEffSessions; //Effective Number of PROOF sessions on the assigned machines
123
124 TFileHandler *fInputHandler; //Input socket handler
125
126 TQueryResultManager *fQMgr; //Query-result manager
127
128 TList *fWaitingQueries; //list of TProofQueryResult waiting to be processed
129 Bool_t fIdle; //TRUE if idle
130 std::recursive_mutex fQMtx; // To protect async msg queue
131
132 TList *fQueuedMsg; //list of messages waiting to be processed
133
134 TString fPrefix; //Prefix identifying the node
135
136 Bool_t fRealTimeLog; //TRUE if log messages should be send back in real-time
137
138 TShutdownTimer *fShutdownTimer; // Timer used to shutdown out-of-control sessions
139 TReaperTimer *fReaperTimer; // Timer used to control children state
140 TIdleTOTimer *fIdleTOTimer; // Timer used to control children state
141
142 Int_t fCompressMsg; // Compression level for messages
143
144 TDataSetManager* fDataSetManager; // dataset manager
145 TDataSetManagerFile *fDataSetStgRepo; // repository for staging requests
146
147 Bool_t fSendLogToMaster; // On workers, controls logs sending to master
148
149 TServerSocket *fMergingSocket; // Socket used for merging outputs if submerger
150 TMonitor *fMergingMonitor; // Monitor for merging sockets
151 Int_t fMergedWorkers; // Number of workers merged
152
153 // Quotas (-1 to disable)
154 Int_t fMaxQueries; //Max number of queries fully kept
155 Long64_t fMaxBoxSize; //Max size of the sandbox
156 Long64_t fHWMBoxSize; //High-Water-Mark on the sandbox size
157
158 // Memory limits (-1 to disable) set by envs ROOTPROFOASHARD, PROOF_VIRTMEMMAX, PROOF_RESMEMMAX
159 static Long_t fgVirtMemMax; //Hard limit enforced by the system (in kB)
160 static Long_t fgResMemMax; //Hard limit on the resident memory checked
161 //in TProofPlayer::Process (in kB)
162 static Float_t fgMemHWM; // Threshold fraction of max for warning and finer monitoring
163 static Float_t fgMemStop; // Fraction of max for stop processing
164
165 // In bytes; default is 1MB
166 Long64_t fMsgSizeHWM; //High-Water-Mark on the size of messages with results
167
168 static FILE *fgErrorHandlerFile; // File where to log
169 static Int_t fgRecursive; // Keep track of recursive inputs during processing
170
171 // Control sending information to syslog
172 static Int_t fgLogToSysLog; // >0 sent to syslog too
173 static TString fgSysLogService; // name of the syslog service (eg: proofm-0, proofw-0.67)
174 static TString fgSysLogEntity; // logging entity (<user>:<group>)
175
177
178 void RedirectOutput(const char *dir = 0, const char *mode = "w");
179 Int_t CatMotd();
180 Int_t UnloadPackage(const char *package);
182 Int_t OldAuthSetup(TString &wconf);
184
185 // Query handlers
187 TList *inl, Long64_t first, TDSet *dset,
188 const char *selec, TObject *elist);
190
191 // Results handling
192 Int_t SendResults(TSocket *sock, TList *outlist = 0, TQueryResult *pq = 0);
193 Bool_t AcceptResults(Int_t connections, TVirtualProofPlayer *mergerPlayer);
194
195 // Waiting queries handlers
196 void SetIdle(Bool_t st = kTRUE);
202
203protected:
204 virtual void HandleArchive(TMessage *mess, TString *slb = 0);
205 virtual Int_t HandleCache(TMessage *mess, TString *slb = 0);
206 virtual void HandleCheckFile(TMessage *mess, TString *slb = 0);
207 virtual Int_t HandleDataSets(TMessage *mess, TString *slb = 0);
208 virtual void HandleSubmerger(TMessage *mess);
209 virtual void HandleFork(TMessage *mess);
210 virtual Int_t HandleLibIncPath(TMessage *mess);
211 virtual void HandleProcess(TMessage *mess, TString *slb = 0);
212 virtual void HandleQueryList(TMessage *mess);
213 virtual void HandleRemove(TMessage *mess, TString *slb = 0);
214 virtual void HandleRetrieve(TMessage *mess, TString *slb = 0);
215 virtual Int_t HandleWorkerLists(TMessage *mess);
216
217 virtual void ProcessNext(TString *slb = 0);
218 virtual Int_t Setup();
220 virtual void MakePlayer();
221 virtual void DeletePlayer();
222
223 virtual Int_t Fork();
225 Bool_t IsIdle();
226 Bool_t UnlinkDataDir(const char *path);
227
228 static TString fgLastMsg; // Message about status before exception
229 static Long64_t fgLastEntry; // Last entry before exception
230
231public:
232 TProofServ(Int_t *argc, char **argv, FILE *flog = 0);
233 virtual ~TProofServ();
234
235 virtual Int_t CreateServer();
236
237 TProof *GetProof() const { return fProof; }
238 const char *GetService() const { return fService; }
239 const char *GetConfDir() const { return fConfDir; }
240 const char *GetConfFile() const { return fConfFile; }
241 const char *GetUser() const { return fUser; }
242 const char *GetGroup() const { return fGroup; }
243 const char *GetWorkDir() const { return fWorkDir; }
244 const char *GetImage() const { return fImage; }
245 const char *GetSessionTag() const { return fSessionTag; }
246 const char *GetTopSessionTag() const { return fTopSessionTag; }
247 const char *GetSessionDir() const { return fSessionDir; }
248 const char *GetCacheDir() const { return fCacheDir; }
249 TPackMgr *GetPackMgr() const { return fPackMgr; }
250 const char *GetDataDir() const { return fDataDir; }
251 const char *GetDataDirOpts() const { return fDataDirOpts; }
252 Int_t GetProtocol() const { return fProtocol; }
253 const char *GetOrdinal() const { return fOrdinal; }
254 Int_t GetGroupId() const { return fGroupId; }
255 Int_t GetGroupSize() const { return fGroupSize; }
256 Int_t GetLogLevel() const { return fLogLevel; }
257 TSocket *GetSocket() const { return fSocket; }
258 Float_t GetRealTime() const { return fRealTime; }
259 Float_t GetCpuTime() const { return fCpuTime; }
261
265
266 void GetOptions(Int_t *argc, char **argv);
268
269 static Long_t GetVirtMemMax();
270 static Long_t GetResMemMax();
271 static Float_t GetMemHWM();
272 static Float_t GetMemStop();
273
275
276 const char *GetPrefix() const { return fPrefix; }
277
278 void FlushLogFile();
279 void TruncateLogFile(); // Called also by TDSetProxy::Next()
280
281 TProofLockPath *GetCacheLock() { return fCacheLock; } //cache dir locker; used by TProofPlayer
282
283 virtual EQueryAction GetWorkers(TList *workers, Int_t &prioritychange,
284 Bool_t resume = kFALSE);
285 virtual void HandleException(Int_t sig);
286 virtual Int_t HandleSocketInput(TMessage *mess, Bool_t all);
287 virtual void HandleSocketInput();
288 virtual void HandleUrgentData();
289 virtual void HandleSigPipe();
290 virtual void HandleTermination() { Terminate(0); }
292 Bool_t IsEndMaster() const { return fEndMaster; }
293 Bool_t IsMaster() const { return fMasterServ; }
294 Bool_t IsParallel() const;
295 Bool_t IsTopMaster() const { return fOrdinal == "0"; }
296
297 void Run(Bool_t retrn = kFALSE);
298
299 void Print(Option_t *option="") const;
300
301 void RestartComputeTime();
302
303 TObject *Get(const char *namecycle);
304 TDSetElement *GetNextPacket(Long64_t totalEntries = -1);
305 virtual void ReleaseWorker(const char *) { }
306 void Reset(const char *dir);
307 Int_t ReceiveFile(const char *file, Bool_t bin, Long64_t size);
308 void SendAsynMessage(const char *msg, Bool_t lf = kTRUE);
309 virtual void SendLogFile(Int_t status = 0, Int_t start = -1, Int_t end = -1);
310 void SendStatistics();
311 void SendParallel(Bool_t async = kFALSE);
312
314
315 // Disable / Enable read timeout
316 virtual void DisableTimeout() { }
317 virtual void EnableTimeout() { }
318
319 virtual void Terminate(Int_t status);
320
321 // Log control
323
324 static FILE *SetErrorHandlerFile(FILE *ferr);
325 static void ErrorHandler(Int_t level, Bool_t abort, const char *location,
326 const char *msg);
327
328 static void ResolveKeywords(TString &fname, const char *path = 0);
329
330 static void SetLastMsg(const char *lastmsg);
331 static void SetLastEntry(Long64_t lastentry);
332
333 // To handle local data server related paths
334 static void FilterLocalroot(TString &path, const char *url = "root://dum/");
335 static void GetLocalServer(TString &dsrv);
336
337 // To prepara ethe map of files to process
339 static Int_t RegisterDataSets(TList *in, TList *out, TDataSetManager *dsm, TString &e);
340
341 static Bool_t IsActive();
342 static TProofServ *This();
343
344 ClassDef(TProofServ,0) //PROOF Server Application Interface
345};
346
348
349class TProofLockPath : public TNamed {
350private:
351 Int_t fLockId; //file id of dir lock
352
353public:
354 TProofLockPath(const char *path) : TNamed(path,path), fLockId(-1) { }
356
357 Int_t Lock();
358 Int_t Unlock();
359
360 Bool_t IsLocked() const { return (fLockId > -1); }
361};
362
364private:
365 TProofLockPath *fLocker; //locker instance
366
367public:
370};
371
372//----- Handles output from commands executed externally via a pipe. ---------//
373//----- The output is redirected one level up (i.e., to master or client). ---//
374//______________________________________________________________________________
376private:
377 TSocket *fSocket; // Socket where to redirect the message
378 FILE *fFile; // File connected with the open pipe
379 TString fPfx; // Prefix to be prepended to messages
380
381 static TString fgPfx; // Default prefix to be prepended to messages
382 static Int_t fgCmdRtn; // Return code of the command execution (available only
383 // after closing the pipe)
384public:
386 TProofServLogHandler(const char *cmd, TSocket *s, const char *pfx = "");
387 TProofServLogHandler(FILE *f, TSocket *s, const char *pfx = "");
388 virtual ~TProofServLogHandler();
389
390 Bool_t IsValid() { return ((fFile && fSocket) ? kTRUE : kFALSE); }
391
392 Bool_t Notify();
393 Bool_t ReadNotify() { return Notify(); }
394
395 static void SetDefaultPrefix(const char *pfx);
396 static Int_t GetCmdRtn();
397};
398
399//--- Guard class: close pipe, deactivatethe related descriptor --------------//
400//______________________________________________________________________________
402
403private:
405
406public:
407 TProofServLogHandlerGuard(const char *cmd, TSocket *s,
408 const char *pfx = "", Bool_t on = kTRUE);
410 const char *pfx = "", Bool_t on = kTRUE);
412};
413
414//--- Special timer to control delayed shutdowns
415//______________________________________________________________________________
416class TShutdownTimer : public TTimer {
417private:
420
421public:
423
424 Bool_t Notify();
425};
426
427//--- Synchronous timer used to reap children processes change of state
428//______________________________________________________________________________
429class TReaperTimer : public TTimer {
430private:
431 TList *fChildren; // List of children (forked) processes
432
433public:
434 TReaperTimer(Long_t frequency = 1000) : TTimer(frequency, kTRUE), fChildren(0) { }
435 virtual ~TReaperTimer();
436
437 void AddPid(Int_t pid);
438 Bool_t Notify();
439};
440
441//--- Special timer to terminate idle sessions
442//______________________________________________________________________________
443class TIdleTOTimer : public TTimer {
444private:
446
447public:
448 TIdleTOTimer(TProofServ *p, Int_t delay) : TTimer(delay, kTRUE), fProofServ(p) { }
449
450 Bool_t Notify();
451};
452//______________________________________________________________________________
454
455private:
457
458public:
461};
462
463//______________________________________________________________________________
465{
466 return (fCompressMsg < 0) ? -1 : fCompressMsg % 100;
467}
468
469#endif
#define R__EXTERN
Definition: DllImport.h:27
#define f(i)
Definition: RSha256.hxx:104
#define e(i)
Definition: RSha256.hxx:103
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
int Int_t
Definition: RtypesCore.h:45
const Bool_t kFALSE
Definition: RtypesCore.h:101
long Long_t
Definition: RtypesCore.h:54
bool Bool_t
Definition: RtypesCore.h:63
long long Long64_t
Definition: RtypesCore.h:80
float Float_t
Definition: RtypesCore.h:57
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
#define BIT(n)
Definition: Rtypes.h:85
int nentries
Definition: THbookFile.cxx:91
R__EXTERN TProofServ * gProofServ
Definition: TProofServ.h:347
Int_t(* OldProofServAuthSetup_t)(TSocket *, Bool_t, Int_t, TString &, TString &, TString &)
Definition: TProofServ.h:62
static struct mg_connection * fc(struct mg_context *ctx)
Definition: civetweb.c:3728
This class creates the ROOT Application Environment that interfaces to the windowing system eventloop...
Definition: TApplication.h:39
Manages an element of a TDSet.
Definition: TDSet.h:66
This class implements a data set to be used for PROOF processing.
Definition: TDSet.h:153
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:34
virtual ~TIdleTOTimerGuard()
Definition: TProofServ.h:460
TIdleTOTimer * fIdleTOTimer
Definition: TProofServ.h:456
TIdleTOTimerGuard(TIdleTOTimer *t)
Definition: TProofServ.h:459
Bool_t Notify()
Handle expiration of the idle timer. The session will just be terminated.
Definition: TProofServ.cxx:517
TIdleTOTimer(TProofServ *p, Int_t delay)
Definition: TProofServ.h:448
TProofServ * fProofServ
Definition: TProofServ.h:445
A doubly linked list.
Definition: TList.h:44
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
Mother of all ROOT objects.
Definition: TObject.h:37
EStatusBits
Definition: TObject.h:57
The PROOF package manager contains tools to manage packages.
Definition: TPackMgr.h:37
TList * GetListOfEnabled() const
Get list of enabled packages Returns a pointer to a TList object, transferring ownership to the calle...
Definition: TPackMgr.cxx:644
TProofLockPath * fLocker
Definition: TProofServ.h:365
TProofLockPathGuard(TProofLockPath *l)
Definition: TProofServ.h:368
Bool_t IsLocked() const
Definition: TProofServ.h:360
Int_t Unlock()
Unlock the directory.
TProofLockPath(const char *path)
Definition: TProofServ.h:354
Int_t Lock()
Locks the directory.
TQueryResult version adapted to PROOF neeeds.
Version of the PROOF worker server for local running.
TProofServLogHandlerGuard(const char *cmd, TSocket *s, const char *pfx="", Bool_t on=kTRUE)
Init a guard for executing a command in a pipe.
Definition: TProofServ.cxx:354
TProofServLogHandler * fExecHandler
Definition: TProofServ.h:404
virtual ~TProofServLogHandlerGuard()
Close a guard for executing a command in a pipe.
Definition: TProofServ.cxx:394
Bool_t Notify()
Handle available message in the open file.
Definition: TProofServ.cxx:305
Bool_t ReadNotify()
Notify when something can be read from the descriptor associated with this handler.
Definition: TProofServ.h:393
virtual ~TProofServLogHandler()
Handle available message in the open file.
Definition: TProofServ.cxx:288
TProofServLogHandler(const char *cmd, TSocket *s, const char *pfx="")
Execute 'cmd' in a pipe and handle output messages from the related file.
Definition: TProofServ.cxx:242
static Int_t fgCmdRtn
Definition: TProofServ.h:382
static TString fgPfx
Definition: TProofServ.h:381
static Int_t GetCmdRtn()
Static method to get the return code from the execution of a command via the pipe.
Definition: TProofServ.cxx:346
static void SetDefaultPrefix(const char *pfx)
Static method to set the default prefix.
Definition: TProofServ.cxx:338
Class providing the PROOF server.
Definition: TProofServ.h:66
Int_t GetLogLevel() const
Definition: TProofServ.h:256
Float_t fCpuTime
Definition: TProofServ.h:114
TString fQueryDir
Definition: TProofServ.h:88
const char * GetOrdinal() const
Definition: TProofServ.h:253
TPackMgr * fPackMgr
Definition: TProofServ.h:86
virtual ~TProofServ()
Cleanup.
void SetIdle(Bool_t st=kTRUE)
Change the idle status.
const char * GetConfDir() const
Definition: TProofServ.h:239
Int_t fProtocol
Definition: TProofServ.h:103
void Interrupt()
Definition: TProofServ.h:291
void TruncateLogFile()
Truncate the log file to the 80% of the required max size if this is set.
Int_t CatMotd()
Print message of the day (in the file pointed by the env PROOFMOTD or from fConfDir/etc/proof/motd).
TString fArchivePath
Definition: TProofServ.h:96
Int_t GetPriority()
Get the processing priority for the group the user belongs too.
Int_t fGroupId
Definition: TProofServ.h:105
void SendStatistics()
Send statistics of slave server to master or client.
const char * GetImage() const
Definition: TProofServ.h:244
virtual Int_t CreateServer()
Finalize the server setup.
Definition: TProofServ.cxx:792
TList * GetEnabledPackages() const
Definition: TProofServ.h:267
Int_t fLogLevel
Definition: TProofServ.h:107
FILE * fLogFile
Definition: TProofServ.h:100
virtual EQueryAction GetWorkers(TList *workers, Int_t &prioritychange, Bool_t resume=kFALSE)
Get list of workers to be used from now on.
Int_t GetQuerySeqNum() const
Definition: TProofServ.h:260
virtual void DisableTimeout()
Definition: TProofServ.h:316
Bool_t IsWaiting()
Return kTRUE if the session is waiting for the OK to start processing.
TString fDataDir
Definition: TProofServ.h:90
const char * GetTopSessionTag() const
Definition: TProofServ.h:246
void Print(Option_t *option="") const
Print status of slave server.
static void ErrorHandler(Int_t level, Bool_t abort, const char *location, const char *msg)
The PROOF error handler function.
static Long_t fgResMemMax
Definition: TProofServ.h:160
Float_t GetCpuTime() const
Definition: TProofServ.h:259
TString fSessionDir
Definition: TProofServ.h:85
virtual void ReleaseWorker(const char *)
Definition: TProofServ.h:305
TMonitor * fMergingMonitor
Definition: TProofServ.h:150
TString fAdminPath
Definition: TProofServ.h:92
const char * GetUser() const
Definition: TProofServ.h:241
virtual void HandleProcess(TMessage *mess, TString *slb=0)
Handle processing request.
void FlushLogFile()
Reposition the read pointer in the log file to the very end.
Int_t CleanupWaitingQueries(Bool_t del=kTRUE, TList *qls=0)
Cleanup the waiting queries list.
static FILE * fgErrorHandlerFile
Definition: TProofServ.h:168
static Bool_t IsActive()
Static function that returns kTRUE in case we are a PROOF server.
static TProofServ * This()
Static function returning pointer to global object gProofServ.
TProof * GetProof() const
Definition: TProofServ.h:237
TString fService
Definition: TProofServ.h:76
static void GetLocalServer(TString &dsrv)
Extract LOCALDATASERVER info in 'dsrv'.
virtual void HandleRemove(TMessage *mess, TString *slb=0)
Handle remove request.
Int_t GetGroupId() const
Definition: TProofServ.h:254
static void SetLastEntry(Long64_t lastentry)
Set the last entry before exception.
virtual void HandleArchive(TMessage *mess, TString *slb=0)
Handle archive request.
static Float_t GetMemHWM()
MemHWM getter.
Int_t fLogFileDes
Definition: TProofServ.h:101
Bool_t IsParallel() const
True if in parallel mode.
TProofLockPath * fQueryLock
Definition: TProofServ.h:95
static void FilterLocalroot(TString &path, const char *url="root://dum/")
If 'path' is local and 'dsrv' is Xrootd, apply 'path.Localroot' settings, if any.
Int_t GetActSessions() const
Definition: TProofServ.h:263
Long64_t fMsgSizeHWM
Definition: TProofServ.h:166
static FILE * SetErrorHandlerFile(FILE *ferr)
Set the file stream where to log (default stderr).
Float_t GetEffSessions() const
Definition: TProofServ.h:264
virtual void HandleFork(TMessage *mess)
Cloning itself via fork. Not implemented.
virtual void HandleSigPipe()
Called when the client is not alive anymore (i.e.
void RedirectOutput(const char *dir=0, const char *mode="w")
Redirect stdout to a log file.
static void SetLastMsg(const char *lastmsg)
Set the message to be sent back in case of exceptions.
TStopwatch fLatency
Definition: TProofServ.h:115
virtual void DeletePlayer()
Delete player instance.
const char * GetDataDirOpts() const
Definition: TProofServ.h:251
virtual void ProcessNext(TString *slb=0)
process the next query from the queue of submitted jobs.
Bool_t fMasterServ
Definition: TProofServ.h:111
TSocket * GetSocket() const
Definition: TProofServ.h:257
virtual void HandleUrgentData()
Handle Out-Of-Band data sent by the master or client.
Float_t GetRealTime() const
Definition: TProofServ.h:258
void SetQueryRunning(TProofQueryResult *pq)
Set query in running state.
TProofQueryResult * NextQuery()
Get the next query from the waiting list.
TSocket * fSocket
Definition: TProofServ.h:97
Int_t fCompressMsg
Definition: TProofServ.h:142
Int_t SetupCommon()
Common part (between TProofServ and TXProofServ) of the setup phase.
Int_t SendResults(TSocket *sock, TList *outlist=0, TQueryResult *pq=0)
Sends all objects from the given list to the specified socket.
TString fDataSetDir
Definition: TProofServ.h:89
TString fPrefix
Definition: TProofServ.h:134
const char * GetGroup() const
Definition: TProofServ.h:242
TDSetElement * GetNextPacket(Long64_t totalEntries=-1)
Get next range of entries to be processed on this server.
Bool_t IsEndMaster() const
Definition: TProofServ.h:292
TString fOutputFile
Definition: TProofServ.h:93
void SendAsynMessage(const char *msg, Bool_t lf=kTRUE)
Send an asychronous message to the master / client .
Int_t UnloadPackage(const char *package)
static void ResolveKeywords(TString &fname, const char *path=0)
Replace <ord>, <user>, <u>, <group>, <stag>, <qnum>, <file>, <rver> and <build> placeholders in fname...
Int_t ReceiveFile(const char *file, Bool_t bin, Long64_t size)
Receive a file, either sent by a client or a master server.
virtual Int_t HandleWorkerLists(TMessage *mess)
Handle here all requests to modify worker lists.
static Int_t RegisterDataSets(TList *in, TList *out, TDataSetManager *dsm, TString &e)
Register TFileCollections in 'out' as datasets according to the rules in 'in'.
TVirtualProofPlayer * fPlayer
Definition: TProofServ.h:99
TString fSessionTag
Definition: TProofServ.h:83
virtual void HandleQueryList(TMessage *mess)
Handle request for list of queries.
Bool_t IsMaster() const
Definition: TProofServ.h:293
virtual void HandleTermination()
Definition: TProofServ.h:290
const char * GetDataDir() const
Definition: TProofServ.h:250
Bool_t fSendLogToMaster
Definition: TProofServ.h:147
Int_t GetTotSessions() const
Definition: TProofServ.h:262
virtual void HandleCheckFile(TMessage *mess, TString *slb=0)
Handle file checking request.
static Float_t fgMemStop
Definition: TProofServ.h:163
TProofLockPath * fCacheLock
Definition: TProofServ.h:94
TProof * fProof
Definition: TProofServ.h:98
TString fOrdinal
Definition: TProofServ.h:104
TProofServ(Int_t *argc, char **argv, FILE *flog=0)
Main constructor.
Definition: TProofServ.cxx:562
Bool_t fEndMaster
Definition: TProofServ.h:110
Long64_t GetMsgSizeHWM() const
Definition: TProofServ.h:274
Long64_t fLogFileMaxSize
Definition: TProofServ.h:102
Int_t GetGroupSize() const
Definition: TProofServ.h:255
virtual Int_t HandleCache(TMessage *mess, TString *slb=0)
Handle here all cache and package requests.
std::recursive_mutex fQMtx
Definition: TProofServ.h:130
virtual void HandleSocketInput()
Handle input coming from the client or from the master server.
TString fWorkDir
Definition: TProofServ.h:81
virtual void EnableTimeout()
Definition: TProofServ.h:317
const char * GetConfFile() const
Definition: TProofServ.h:240
virtual void MakePlayer()
Make player instance.
virtual void HandleSubmerger(TMessage *mess)
Handle a message of type kPROOF_SUBMERGER.
virtual Int_t HandleLibIncPath(TMessage *mess)
Handle lib, inc search paths modification request.
TShutdownTimer * fShutdownTimer
Definition: TProofServ.h:138
TString fCacheDir
Definition: TProofServ.h:87
Bool_t IsIdle()
Return the idle status.
Int_t fNcmd
Definition: TProofServ.h:108
TDataSetManagerFile * fDataSetStgRepo
Definition: TProofServ.h:145
Int_t GetSessionStatus()
Return the status of this session: 0 idle 1 running 2 being terminated (currently unused) 3 queued 4 ...
virtual Int_t HandleDataSets(TMessage *mess, TString *slb=0)
Handle here requests about datasets.
TServerSocket * fMergingSocket
Definition: TProofServ.h:149
Bool_t fInterrupt
Definition: TProofServ.h:112
Int_t fActSessions
Definition: TProofServ.h:121
TList * fQueuedMsg
Definition: TProofServ.h:132
TString fGroup
Definition: TProofServ.h:78
Bool_t fRealTimeLog
Definition: TProofServ.h:136
TPackMgr * GetPackMgr() const
Definition: TProofServ.h:249
void GetOptions(Int_t *argc, char **argv)
Get and handle command line options.
virtual Int_t Setup()
Print the ProofServ logo on standard output.
TStopwatch fCompute
Definition: TProofServ.h:116
TProofLockPath * GetCacheLock()
Definition: TProofServ.h:281
static Long_t fgVirtMemMax
Definition: TProofServ.h:159
Int_t fMergedWorkers
Definition: TProofServ.h:151
TString fImage
Definition: TProofServ.h:82
@ kQueryEnqueued
Definition: TProofServ.h:73
@ kQueryModify
Definition: TProofServ.h:73
TString fTopSessionTag
Definition: TProofServ.h:84
TFileHandler * fInputHandler
Definition: TProofServ.h:124
void SendParallel(Bool_t async=kFALSE)
Send number of parallel nodes to master or client.
Int_t GetCompressionLevel() const
Definition: TProofServ.h:464
static Float_t fgMemHWM
Definition: TProofServ.h:162
Float_t fEffSessions
Definition: TProofServ.h:122
static Long_t GetResMemMax()
ResMemMax getter.
Long64_t fHWMBoxSize
Definition: TProofServ.h:156
Int_t UnloadPackages()
TString fConfDir
Definition: TProofServ.h:79
Int_t QueueQuery(TProofQueryResult *pq)
Add a query to the waiting list Returns the number of queries in the list.
TIdleTOTimer * fIdleTOTimer
Definition: TProofServ.h:140
static Int_t fgLogToSysLog
Definition: TProofServ.h:172
static TString fgLastMsg
Definition: TProofServ.h:228
virtual Int_t Fork()
Fork a child.
Int_t fMaxQueries
Definition: TProofServ.h:154
const char * GetCacheDir() const
Definition: TProofServ.h:248
static Long_t GetVirtMemMax()
VirtMemMax getter.
const char * GetSessionDir() const
Definition: TProofServ.h:247
Bool_t UnlinkDataDir(const char *path)
Scan recursively the datadir and unlink it if empty Return kTRUE if it can be unlinked,...
Int_t GetProtocol() const
Definition: TProofServ.h:252
TString fConfFile
Definition: TProofServ.h:80
Int_t fTotSessions
Definition: TProofServ.h:120
Int_t fGroupSize
Definition: TProofServ.h:106
Bool_t AcceptResults(Int_t connections, TVirtualProofPlayer *mergerPlayer)
Accept and merge results from a set of workers.
TDataSetManager * fDataSetManager
Definition: TProofServ.h:144
TString fUser
Definition: TProofServ.h:77
static Int_t fgRecursive
Definition: TProofServ.h:169
TQueryResultManager * fQMgr
Definition: TProofServ.h:126
TList * fWaitingQueries
Definition: TProofServ.h:128
void Reset(const char *dir)
Reset PROOF environment to be ready for execution of next command.
virtual void Terminate(Int_t status)
Terminate the proof server.
virtual void HandleException(Int_t sig)
Exception handler: we do not try to recover here, just exit.
Int_t OldAuthSetup(TString &wconf)
Setup authentication related stuff for old versions.
static TString fgSysLogEntity
Definition: TProofServ.h:174
TString fDataDirOpts
Definition: TProofServ.h:91
Int_t WaitingQueries()
Return the number of waiting queries.
void Run(Bool_t retrn=kFALSE)
Main server eventloop.
Long64_t fMaxBoxSize
Definition: TProofServ.h:155
const char * GetWorkDir() const
Definition: TProofServ.h:243
const char * GetPrefix() const
Definition: TProofServ.h:276
static TString fgSysLogService
Definition: TProofServ.h:173
void LogToMaster(Bool_t on=kTRUE)
Definition: TProofServ.h:322
Int_t fGroupPriority
Definition: TProofServ.h:109
TReaperTimer * fReaperTimer
Definition: TProofServ.h:139
static Long64_t fgLastEntry
Definition: TProofServ.h:229
const char * GetSessionTag() const
Definition: TProofServ.h:245
virtual void SendLogFile(Int_t status=0, Int_t start=-1, Int_t end=-1)
Send log file to master.
Float_t fRealTime
Definition: TProofServ.h:113
static Float_t GetMemStop()
MemStop getter.
Bool_t IsTopMaster() const
Definition: TProofServ.h:295
void RestartComputeTime()
Reset the compute time.
Int_t fQuerySeqNum
Definition: TProofServ.h:118
TProofQueryResult * MakeQueryResult(Long64_t nentries, const char *opt, TList *inl, Long64_t first, TDSet *dset, const char *selec, TObject *elist)
Create a TProofQueryResult instance for this query.
virtual void HandleRetrieve(TMessage *mess, TString *slb=0)
Handle retrieve request.
TStopwatch fSaveOutput
Definition: TProofServ.h:117
Int_t UpdateSessionStatus(Int_t xst=-1)
Update the session status in the relevant file.
Bool_t fIdle
Definition: TProofServ.h:129
TObject * Get(const char *namecycle)
Get object with name "name;cycle" (e.g.
static TMap * GetDataSetNodeMap(TFileCollection *fc, TString &emsg)
Get a map {server-name, list-of-files} for collection 'fc' to be used in TPacketizerFile.
const char * GetService() const
Definition: TProofServ.h:238
This class controls a Parallel ROOT Facility, PROOF, cluster.
Definition: TProof.h:316
Class managing the query-result area.
A container class for query results.
Definition: TQueryResult.h:41
TReaperTimer(Long_t frequency=1000)
Definition: TProofServ.h:434
Bool_t Notify()
Check if any of the registered children has changed its state.
Definition: TProofServ.cxx:479
TList * fChildren
Definition: TProofServ.h:431
void AddPid(Int_t pid)
Add an entry for 'pid' in the internal list.
Definition: TProofServ.cxx:463
virtual ~TReaperTimer()
Destructor.
Definition: TProofServ.cxx:451
TShutdownTimer(TProofServ *p, Int_t delay)
Construtor.
Definition: TProofServ.cxx:406
Bool_t Notify()
Handle expiration of the shutdown timer.
Definition: TProofServ.cxx:418
TProofServ * fProofServ
Definition: TProofServ.h:418
Stopwatch class.
Definition: TStopwatch.h:28
Basic string class.
Definition: TString.h:136
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
virtual void Start(Long_t milliSec=-1, Bool_t singleShot=kFALSE)
Starts the timer with a milliSec timeout.
Definition: TTimer.cxx:211
virtual void Stop()
Definition: TTimer.h:94
Abstract interface for the PROOF player.
This class implements the XProofD version of TProofServ, with respect to which it differs only for th...
Definition: TXProofServ.h:30
static constexpr double s
Definition: file.py:1
Definition: first.py:1
auto * l
Definition: textangle.C:4