Logo ROOT   6.14/05
Reference Guide
TProofLite.h
Go to the documentation of this file.
1 // @(#)root/proof:$Id$
2 // Author: G. Ganis March 2008
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 #ifndef ROOT_TProofLite
13 #define ROOT_TProofLite
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TProofLite //
19 // //
20 // This class starts a PROOF session on the local machine: no daemons, //
21 // client and master merged, communications via UNIX-like sockets. //
22 // By default the number of workers started is NumberOfCores+1; a //
23 // different number can be forced on construction. //
24 // //
25 //////////////////////////////////////////////////////////////////////////
26 
27 #include "TProof.h"
28 
29 class TDSet;
30 class TList;
32 class TDataSetManager;
33 class TProofLockPath;
34 class TProofMgr;
35 class TProofQueryResult;
36 class TServerSocket;
37 class TSelector;
38 class TPMERegexp;
39 
40 class TProofLite : public TProof {
41 
42 friend class TProofPlayerLite;
43 
44 private:
45  Int_t fNWorkers; // Number of workers
46  TString fSandbox; // PROOF sandbox root dir
47  TString fCacheDir; // Directory containing cache of user files
48  TString fQueryDir; // Directory containing query results and status
49  TString fDataSetDir; // Directory containing info about known data sets
50  TString fSockPath; // UNIX socket path for communication with workers
51  TServerSocket *fServSock; // Server socket to accept call backs
52  Bool_t fForkStartup; // Startup N-1 workers forking the first worker
53 
54  Int_t fDynamicStartupStep; // Dyn Startup simulation: increment at each call
55  Int_t fDynamicStartupNMax; // Dyn Startup simulation: max number of workers
56 
57  TString fVarExp; // Internal variable to pass drawing options
58  TString fSelection; // Internal variable to pass drawing options
59 
60  TProofLockPath *fCacheLock; // Cache dir locker
61  TProofLockPath *fQueryLock; // Query dir locker
62  TQueryResultManager *fQMgr; // Query-result manager
63 
64  TDataSetManager *fDataSetManager; // Dataset manager
65  TDataSetManagerFile *fDataSetStgRepo; // Dataset manager for staging requests
66 
67  TPMERegexp *fReInvalid; // Regular expression matching invalid dataset URIs
68 
69  static Int_t fgWrksMax; // Max number of workers
70 
71  TProofLite(const TProofLite &); // not implemented
72  void operator=(const TProofLite &); // idem
73 
76  void FindUniqueSlaves();
77  void NotifyStartUp(const char *action, Int_t done, Int_t tot);
78  Int_t SetProofServEnv(const char *ord);
80 
81  void ResolveKeywords(TString &s, const char *ord, const char *logfile);
82 
83  void SendInputDataFile();
84  void ShowDataDir(const char *dirname);
85 
86 protected:
87  TProofLite() : TProof() { } // For derived classes to use
88 
89  Int_t Init(const char *masterurl, const char *conffile,
90  const char *confdir, Int_t loglevel,
91  const char *alias = 0);
92  TProofQueryResult *MakeQueryResult(Long64_t nent, const char *opt,
93  Long64_t fst, TDSet *dset,
94  const char *selec);
96  Int_t SetupWorkers(Int_t opt = 0, TList *wrks = 0);
97  Int_t CopyMacroToCache(const char *macro, Int_t headerRequired = 0,
98  TSelector **selector = 0, Int_t opt = 0, TList *wrks = 0);
99 
101 
102 public:
103  TProofLite(const char *masterurl, const char *conffile = kPROOF_ConfFile,
104  const char *confdir = kPROOF_ConfDir, Int_t loglevel = 0,
105  const char *alias = 0, TProofMgr *mgr = 0);
106  virtual ~TProofLite();
107 
108  void Print(Option_t *option="") const;
109 
110  Long64_t DrawSelect(TDSet *dset, const char *varexp,
111  const char *selection = "",
112  Option_t *option = "", Long64_t nentries = -1,
113  Long64_t firstentry = 0);
114  Long64_t Process(TDSet *dset, const char *sel, Option_t *o = "",
115  Long64_t nent = -1, Long64_t fst = 0);
116  Long64_t Process(TFileCollection *fc, const char *sel, Option_t *o = "",
117  Long64_t nent = -1, Long64_t fst = 0)
118  { return TProof::Process(fc, sel, o, nent, fst); }
119  Long64_t Process(const char *dsname, const char *sel, Option_t *o = "",
120  Long64_t nent = -1, Long64_t fst = 0, TObject *enl = 0)
121  { return TProof::Process(dsname, sel, o, nent, fst, enl); }
122  Long64_t Process(const char *sel, Long64_t nent, Option_t *o = "")
123  { return TProof::Process(sel, nent, o); }
124  // Process via TSelector
125  Long64_t Process(TDSet *dset, TSelector *sel, Option_t *o = "",
126  Long64_t nent = -1, Long64_t fst = 0)
127  { return TProof::Process(dset, sel, o, nent, fst); }
129  Long64_t nent = -1, Long64_t fst = 0)
130  { return TProof::Process(fc, sel, o, nent, fst); }
131  Long64_t Process(const char *dsname, TSelector *sel, Option_t *o = "",
132  Long64_t nent = -1, Long64_t fst = 0, TObject *enl = 0)
133  { return TProof::Process(dsname, sel, o, nent, fst, enl); }
135  { return TProof::Process(sel, nent, o); }
136 
137  // Cache management
138  void ShowCache(Bool_t all = kFALSE);
139  void ClearCache(const char *file = 0);
140  Int_t Load(const char *macro, Bool_t notOnClient = kFALSE, Bool_t uniqueOnly = kTRUE,
141  TList *wrks = 0);
142 
143  // Data management
144  void ShowData();
145 
146  // Query management
147  TList *GetListOfQueries(Option_t *opt = "");
148  Int_t Remove(const char *ref, Bool_t all);
149 
150  // Dataset handling
151  Bool_t RegisterDataSet(const char *dsName, TFileCollection *ds, const char *opt = "");
152  Bool_t ExistsDataSet(const char *uri);
153  TMap *GetDataSets(const char *uri = "", const char * = 0);
154  void ShowDataSets(const char *uri = "", const char * = 0);
155  TFileCollection *GetDataSet(const char *uri, const char * = 0);
156  Int_t RemoveDataSet(const char *uri, const char * = 0);
157  Bool_t RequestStagingDataSet(const char *dataset);
158  Bool_t CancelStagingDataSet(const char *dataset);
159  TFileCollection *GetStagingStatusDataSet(const char *dataset);
160  Int_t VerifyDataSet(const char *uri, const char * = 0);
161  Int_t SetDataSetTreeName( const char *dataset, const char *treename);
162  void ShowDataSetCache(const char *dataset = 0);
163  void ClearDataSetCache(const char *dataset = 0);
164 
165  // Browsing
166  TTree *GetTreeHeader(TDSet *tdset);
167 
168  static Int_t GetNumberOfWorkers(const char *url = 0);
169 
170  ClassDef(TProofLite,0) //PROOF-Lite control class
171 };
172 
173 #endif
Int_t SetProofServEnv(const char *ord)
Create environment files for worker 'ord'.
Definition: TProofLite.cxx:684
void SetQueryRunning(TProofQueryResult *pq)
Set query in running state.
Long64_t Process(const char *sel, Long64_t nent, Option_t *o="")
Generic (non-data based) selector processing: the Process() method of the specified selector (...
Definition: TProofLite.h:122
Long64_t Process(TDSet *dset, TSelector *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0)
Process a data set (TDSet) using the specified selector object.
Definition: TProofLite.h:125
Int_t VerifyDataSet(const char *uri, const char *=0)
Verify if all files in the specified dataset are available.
This class starts a PROOF session on the local machine: no daemons, client and master merged...
Definition: TProofLite.h:40
Bool_t RequestStagingDataSet(const char *dataset)
Allows users to request staging of a particular dataset.
TQueryResultManager * fQMgr
Definition: TProofLite.h:62
TPMERegexp * fReInvalid
Definition: TProofLite.h:67
void ShowDataSetCache(const char *dataset=0)
Display the content of the dataset cache, if any (matching 'dataset', if defined).
long long Long64_t
Definition: RtypesCore.h:69
TFileCollection * GetDataSet(const char *uri, const char *=0)
Get a list of TFileInfo objects describing the files of the specified dataset.
Int_t Load(const char *macro, Bool_t notOnClient=kFALSE, Bool_t uniqueOnly=kTRUE, TList *wrks=0)
Copy the specified macro in the cache directory.
Bool_t ExistsDataSet(const char *uri)
Returns kTRUE if 'dataset' described by 'uri' exists, kFALSE otherwise.
Long64_t Process(TSelector *sel, Long64_t nent, Option_t *o="")
Generic (non-data based) selector processing: the Process() method of the specified selector is calle...
Definition: TProofLite.h:134
const char Option_t
Definition: RtypesCore.h:62
virtual ~TProofLite()
Destructor.
Definition: TProofLite.cxx:375
Long64_t Process(const char *dsname, TSelector *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0, TObject *enl=0)
Process with name of dataset and TSelector object.
Definition: TProofLite.h:131
Bool_t RegisterDataSet(const char *dsName, TFileCollection *ds, const char *opt="")
Register the 'dataSet' on the cluster under the current user, group and the given 'dataSetName'...
TFileCollection * GetStagingStatusDataSet(const char *dataset)
Obtains a TFileCollection showing the staging status of the specified dataset.
void SendInputDataFile()
Make sure that the input data objects are available to the workers in a dedicated file in the cache; ...
This class implements a data set to be used for PROOF processing.
Definition: TDSet.h:153
The PROOF manager interacts with the PROOF server coordinator to create or destroy a PROOF session...
Definition: TProofMgr.h:43
TString fSelection
Definition: TProofLite.h:58
Int_t PollForNewWorkers()
Simulate dynamic addition, for test purposes.
TProofLockPath * fCacheLock
Definition: TProofLite.h:60
Basic string class.
Definition: TString.h:131
void ClearDataSetCache(const char *dataset=0)
Clear the content of the dataset cache, if any (matching 'dataset', if defined).
Int_t SetDataSetTreeName(const char *dataset, const char *treename)
Set/Change the name of the default tree.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
void NotifyStartUp(const char *action, Int_t done, Int_t tot)
Notify setting-up operation message.
Definition: TProofLite.cxx:667
static Int_t fgWrksMax
Definition: TProofLite.h:69
Long64_t Process(TFileCollection *fc, TSelector *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0)
Process a data set (TFileCollection) using the specified selector object The default tree is analyzed...
Definition: TProofLite.h:128
void ShowData()
List contents of the data directory in the sandbox.
void ShowDataDir(const char *dirname)
List contents of the data directory 'dirname'.
void ResolveKeywords(TString &s, const char *ord, const char *logfile)
Resolve some keywords in &#39;s&#39; <logfilewrk>, <user>, <rootsys>, <cpupin>
Definition: TProofLite.cxx:801
Bool_t fForkStartup
Definition: TProofLite.h:52
TDataSetManagerFile * fDataSetStgRepo
Definition: TProofLite.h:65
static struct mg_connection * fc(struct mg_context *ctx)
Definition: civetweb.c:3352
TString fDataSetDir
Definition: TProofLite.h:49
#define ClassDef(name, id)
Definition: Rtypes.h:320
TDataSetManager * fDataSetManager
Definition: TProofLite.h:64
TString fCacheDir
Definition: TProofLite.h:47
Long64_t Process(TDSet *dset, const char *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0)
Process a data set (TDSet) using the specified selector (.C) file.
Int_t Init(const char *masterurl, const char *conffile, const char *confdir, Int_t loglevel, const char *alias=0)
Start the PROOF environment.
Definition: TProofLite.cxx:154
Bool_t CancelStagingDataSet(const char *dataset)
Cancels a dataset staging request.
Version of TProofPlayerRemote merges the functionality needed by clients and masters.
Int_t fDynamicStartupNMax
Definition: TProofLite.h:55
TString fQueryDir
Definition: TProofLite.h:48
TString fSandbox
Definition: TProofLite.h:46
A doubly linked list.
Definition: TList.h:44
const char *const kPROOF_ConfFile
Definition: TProof.h:122
Int_t RemoveDataSet(const char *uri, const char *=0)
Remove the specified dataset from the PROOF cluster.
void ShowDataSets(const char *uri="", const char *=0)
Shows datasets in locations that match the uri By default shows the user&#39;s datasets and global ones...
void operator=(const TProofLite &)
Long64_t DrawSelect(TDSet *dset, const char *varexp, const char *selection="", Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)
Execute the specified drawing action on a data set (TDSet).
Int_t fNWorkers
Definition: TProofLite.h:45
Class managing the query-result area.
Int_t SetupWorkers(Int_t opt=0, TList *wrks=0)
Start up PROOF workers.
Definition: TProofLite.cxx:489
const char *const kPROOF_ConfDir
Definition: TProof.h:123
void ClearCache(const char *file=0)
Remove files from all file caches.
Int_t fDynamicStartupStep
Definition: TProofLite.h:54
TServerSocket * fServSock
Definition: TProofLite.h:51
TList * GetListOfQueries(Option_t *opt="")
Get the list of queries.
virtual Long64_t Process(TDSet *dset, const char *selector, Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)
Process a data set (TDSet) using the specified selector (.C) file or Tselector object Entry- or event...
Definition: TProof.cxx:5275
static Int_t GetNumberOfWorkers(const char *url=0)
Static method to determine the number of workers giving priority to users request.
Definition: TProofLite.cxx:406
TMap * GetDataSets(const char *uri="", const char *=0)
lists all datasets that match given uri
const Bool_t kFALSE
Definition: RtypesCore.h:88
Int_t CreateSandbox()
Create the sandbox for this session.
Definition: TProofLite.cxx:880
TString fSockPath
Definition: TProofLite.h:50
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
Int_t CleanupSandbox()
Remove old sessions dirs keep at most &#39;Proof.MaxOldSessions&#39; (default 10)
Long64_t Process(TFileCollection *fc, const char *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0)
Process a data set (TFileCollection) using the specified selector (.C) file or TSelector object...
Definition: TProofLite.h:116
This class controls a Parallel ROOT Facility, PROOF, cluster.
Definition: TProof.h:316
int nentries
Definition: THbookFile.cxx:89
static constexpr double s
TQueryResult version adapted to PROOF neeeds.
Mother of all ROOT objects.
Definition: TObject.h:37
TString fVarExp
Definition: TProofLite.h:57
Int_t InitDataSetManager()
Initialize the dataset manager from directives or from defaults Return 0 on success, -1 on failure.
Wrapper for PCRE library (Perl Compatible Regular Expressions).
Definition: TPRegexp.h:97
Class that contains a list of TFileInfo&#39;s and accumulated meta data information about its entries...
Definition: file.py:1
TProofLockPath * fQueryLock
Definition: TProofLite.h:61
TTree * GetTreeHeader(TDSet *tdset)
Creates a tree header (a tree with nonexisting files) object for the DataSet.
A TTree object has a header with a name and a title.
Definition: TTree.h:70
TProofQueryResult * MakeQueryResult(Long64_t nent, const char *opt, Long64_t fst, TDSet *dset, const char *selec)
Create a TProofQueryResult instance for this query.
Int_t Remove(const char *ref, Bool_t all)
Handle remove request.
void FindUniqueSlaves()
Add to the fUniqueSlave list the active slaves that have a unique (user) file system image...
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:33
const Bool_t kTRUE
Definition: RtypesCore.h:87
void ShowCache(Bool_t all=kFALSE)
List contents of file cache.
void Print(Option_t *option="") const
Print status of PROOF-Lite cluster.
Definition: TProofLite.cxx:949
Long64_t Process(const char *dsname, const char *sel, Option_t *o="", Long64_t nent=-1, Long64_t fst=0, TObject *enl=0)
Process a dataset which is stored on the master with name &#39;dsetname&#39;.
Definition: TProofLite.h:119
Int_t CopyMacroToCache(const char *macro, Int_t headerRequired=0, TSelector **selector=0, Int_t opt=0, TList *wrks=0)
Copy a macro, and its possible associated .h[h] file, to the cache directory, from where the workers ...