44# include <sys/types.h>
51#include "RConfigure.h"
127 a = Getline(
"\nSwitch to asynchronous mode not supported remotely:"
128 "\nEnter S/s to stop, Q/q to quit, any other key to continue: ");
130 a = Getline(
"\nEnter A/a to switch asynchronous, S/s to stop, Q/q to quit,"
131 " any other key to continue: ");
133 if (
a[0] ==
'Q' ||
a[0] ==
'S' ||
a[0] ==
'q' ||
a[0] ==
's') {
135 Info(
"Notify",
"Processing interrupt signal ... %c",
a[0]);
156 fSocket(
s), fProof(p)
187 while (myord && otherord) {
188 Int_t myval = atoi(myord);
189 Int_t otherval = atoi(otherord);
190 if (myval < otherval)
return 1;
191 if (myval > otherval)
return -1;
192 myord = strchr(myord,
'.');
194 otherord = strchr(otherord,
'.');
195 if (otherord) otherord++;
197 if (myord)
return -1;
198 if (otherord)
return 1;
295 Error(
"SetMergedWorker",
"all workers have been already merged before!");
308 Error(
"AddWorker",
"all workers have been already assigned to this merger");
362 if( 0 == _cluster->
Length() ) {
363 Error(
"PoDCheckUrl",
"PoD server is not running");
403 if (!masterurl || strlen(masterurl) <= 0) {
406 }
else if (!(strstr(masterurl,
"://"))) {
443 }
else if (
fMaster ==
"prooflite") {
452 Init(masterurl, conffile, confdir, loglevel, alias);
457 if (
Exec(
"gProofServ->GetUser()",
"0",
kTRUE) == 0) {
464 emsg =
"could not find 'const char *' string in macro log";
467 emsg =
"could not retrieve user info";
476 Warning(
"TProof",
"%s: using local default %s", emsg.
Data(), usr.
Data());
486 gROOT->GetListOfSockets()->Remove(mgr);
487 gROOT->GetListOfSockets()->Add(mgr);
492 if (!
gROOT->GetListOfProofs()->FindObject(
this))
493 gROOT->GetListOfProofs()->Add(
this);
512 if (!
gROOT->GetListOfProofs()->FindObject(
this))
513 gROOT->GetListOfProofs()->Add(
this);
620 while (envs.Tokenize(env, from,
",")) {
623 Warning(
"Init",
"request for sending over undefined environemnt variable '%s' - ignoring", env.
Data());
625 if (!envsfound.
IsNull()) envsfound +=
",";
633 Warning(
"Init",
"none of the requested env variables were found: '%s'", envs.Data());
635 Info(
"Init",
"the following environment variables have been added to the list to be sent to the nodes: '%s'", envsfound.
Data());
719 gROOT->GetListOfProofs()->Remove(
this);
735 Emit(
"CloseWindow()");
747 const char *confdir,
Int_t loglevel,
const char *alias)
771 if (!conffile || !conffile[0])
773 if (!confdir || !confdir[0])
829 Error(
"Init",
"could not create temporary logfile");
831 Error(
"Init",
"could not open temp logfile for reading");
893 if (enableSchemaEvolution) {
896 Info(
"TProof",
"automatic schema evolution in TMessage explicitly disabled");
906 Error(
"Init",
"failure asserting sandbox directory %s", sandbox.
Data());
915 Error(
"Init",
"failure asserting directory %s", packdir.
Data());
920 Info(
"Init",
"package directory set to %s", packdir.
Data());
929 Info(
"Init",
" %d global package directories registered", nglb);
951 GetRC(
"Proof.DynamicStartup", dyn);
968 if (
s.IsDigit()) nwrk =
s.Atoi();
991 gROOT->GetListOfSockets()->Add(
this);
1016 }
else if (sb ==
"..") {
1039 const char *cq = (
IsLite()) ?
"\"" :
"";
1040 while (sconf.Tokenize(opt, from,
",")) {
1041 if (opt.
IsNull())
continue;
1048 TString mst, top, sub, wrk, all;
1053 all =
n->GetTitle();
1055 mst =
n->GetTitle();
1057 top =
n->GetTitle();
1059 sub =
n->GetTitle();
1061 wrk =
n->GetTitle();
1063 if (all !=
"" && mst ==
"") mst = all;
1064 if (all !=
"" && top ==
"") top = all;
1065 if (all !=
"" && sub ==
"") sub = all;
1066 if (all !=
"" && wrk ==
"") wrk = all;
1067 if (all !=
"" && all.
BeginsWith(
"valgrind_opts:")) {
1069 Info(
"ParseConfigField",
"valgrind run: resetting 'PROOF_WRAPPERCMD':"
1070 " must be set again for next run , if any");
1074 cmd.
Form(
"%svalgrind -v --suppressions=<rootsys>/etc/valgrind-root.supp", cq);
1075 TString mstlab(
"NO"), wrklab(
"NO");
1076 Bool_t doMaster = (opt ==
"valgrind" || (opt.
Contains(
"master") &&
1082 if (mst ==
"" || mst.
BeginsWith(
"valgrind_opts:")) {
1084 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s", cmd.
Data(), mst.
Data());
1087 }
else if (mst !=
"") {
1093 "master valgrinding does not make sense for PROOF-Lite: ignoring");
1095 if (!opt.
Contains(
"workers"))
return;
1097 if (opt ==
"valgrind" || opt ==
"valgrind=") opt =
"valgrind=workers";
1102 if (top ==
"" || top.
BeginsWith(
"valgrind_opts:")) {
1104 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s", cmd.
Data(), top.
Data());
1107 }
else if (top !=
"") {
1113 if (sub ==
"" || sub.
BeginsWith(
"valgrind_opts:")) {
1115 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s", cmd.
Data(), sub.
Data());
1118 }
else if (sub !=
"") {
1124 if (wrk ==
"" || wrk.
BeginsWith(
"valgrind_opts:")) {
1126 var.
Form(
"%s --log-file=<logfilewrk>.__valgrind__.log %s%s", cmd.
Data(), wrk.
Data(), cq);
1131 nwrks = opt(inw+1, opt.
Length());
1132 if (!nwrks.
IsDigit()) nwrks =
"2";
1144 }
else if (wrk !=
"") {
1158 Printf(
" ---> Starting a debug run with valgrind (master:%s, workers:%s)", mstlab.Data(), wrklab.
Data());
1160 Printf(
" ---> Starting a debug run with valgrind (workers:%s)", wrklab.
Data());
1162 Printf(
" ---> Please be patient: startup may be VERY slow ...");
1163 Printf(
" ---> Logs will be available as special tags in the log window (from the progress dialog or TProof::LogViewer()) ");
1164 Printf(
" ---> (Reminder: this debug run makes sense only if you are running a debug version of ROOT)");
1173 Printf(
"*** Requested IgProf performance profiling ***");
1174 TString addLogExt =
"__igprof.pp__.log";
1175 TString addLogFmt =
"igprof -pk -pp -t proofserv.exe -o %s.%s";
1183 tmp.
Form(addLogFmt.
Data(),
"<logfilemst>", addLogExt.
Data());
1186 tmp.
Form(addLogFmt.
Data(),
"<logfilewrk>", addLogExt.
Data());
1212 if ((
c !=
'+') && ((
c <
'0') || (
c >
'9')))
1231 if (
IsLite() && cpuPin) {
1232 Printf(
"*** Requested CPU pinning ***");
1234 const char *pinCmd =
"taskset -c <cpupin>";
1237 if (ev && (p =
dynamic_cast<TNamed *
>(ev->
FindObject(
"PROOF_SLAVE_WRAPPERCMD")))) {
1243 val.
Form(
"\"%s\"", pinCmd);
1256 if (!inpath || strlen(inpath) <= 0) {
1257 Error(
"AssertPath",
"undefined input path");
1266 Error(
"AssertPath",
"could not create path %s", path.
Data());
1273 Error(
"AssertPath",
"could not make path %s writable", path.
Data());
1292 gROOT->GetListOfSockets()->Remove(mgr);
1293 gROOT->GetListOfSockets()->Add(mgr);
1308 Error(
"AddWorkers",
"AddWorkers can only be called on the master!");
1312 if (!workerList || !(workerList->
GetSize())) {
1313 Error(
"AddWorkers",
"empty list of workers!");
1334 if (!addedWorkers) {
1336 Error(
"AddWorkers",
"cannot create new list for the workers to be added");
1344 while ((to = next())) {
1393 addedWorkers->
Add(slave);
1401 Info(
"AddWorkers",
"worker on host %s created"
1407 m <<
TString(
"Opening connections to workers") << nSlaves
1408 << nSlavesDone << slaveOk;
1422 TIter nxsl(addedWorkers);
1424 while ((sl = (
TSlave *) nxsl())) {
1435 Info(
"AddWorkers",
"worker on host %s finalized"
1445 m <<
TString(
"Setting up worker servers") << nSlaves
1446 << nSlavesDone << slaveOk;
1459 if (
s.IsDigit()) nwrk =
s.Atoi();
1465 Info(
"AddWorkers",
"will invoke GoMoreParallel()");
1468 Info(
"AddWorkers",
"GoMoreParallel()=%d", nw);
1474 Info(
"AddWorkers",
"will invoke GoParallel()");
1483 Info(
"AddWorkers",
"will invoke SaveWorkerInfo()");
1489 Info(
"AddWorkers",
"will invoke SendParallel()");
1492 if (goMoreParallel &&
fPlayer) {
1497 Info(
"AddWorkers",
"will send the PROCESS message to selected workers");
1505 delete addedWorkers;
1517 if (packs && packs->
GetSize() > 0) {
1520 while ((pck = (
TPair *) nxp())) {
1526 Info(
"SetupWorkersEnv",
"will invoke UploadPackage() and EnablePackage() on added workers");
1531 Info(
"SetupWorkersEnv",
"will invoke UploadPackage() and EnablePackage() on all workers");
1544 Info(
"SetupWorkersEnv",
"will invoke Load() on selected workers");
1556 Info(
"SetupWorkersEnv",
"will invoke AddDynamicPath() on selected workers");
1564 Info(
"SetupWorkersEnv",
"will invoke AddIncludePath() on selected workers");
1579 Error(
"RemoveWorkers",
"RemoveWorkers can only be called on the master!");
1589 while ((sl = (
TSlave *) nxsl())) {
1595 if (!(workerList->
GetSize())) {
1596 Error(
"RemoveWorkers",
"The list of workers should not be empty!");
1604 while ((to = next())) {
1606 if (!strcmp(to->
ClassName(),
"TProofNodeInfo")) {
1610 while ((sl = (
TSlave *) nxsl())) {
1618 Warning(
"RemoveWorkers",
"unknown object type: %s - it should be"
1619 " TProofNodeInfo or inheriting from TSlave", to->
ClassName());
1649 TString emsg(
"no resource currently available for this session: please retry later");
1661 Printf(
"Starting master: opening connection ...");
1667 fprintf(stderr,
"Starting master:"
1668 " connection open: setting up server ... \r");
1682 Printf(
"Starting master: OK ");
1688 Error(
"StartSlaves",
1689 "client and remote protocols not compatible (%d and %d)",
1708 if (slStatus == -99 || slStatus == -98 || rc == 0) {
1711 if (slStatus == -99)
1712 Error(
"StartSlaves",
"no resources available or problems setting up workers (check logs)");
1713 else if (slStatus == -98)
1714 Error(
"StartSlaves",
"could not setup output redirection on master");
1716 Error(
"StartSlaves",
"setting up master");
1727 Error(
"StartSlaves",
1728 "failed to setup connection with PROOF master server");
1734 gROOT->GetPluginManager()->FindHandler(
"TProofProgressDialog")))
1740 Printf(
"Starting master: failure");
1745 Printf(
"Starting master: OK ");
1750 gROOT->GetPluginManager()->FindHandler(
"TProofProgressDialog")))
1763 Error(
"StartSlaves",
"failed to create (or connect to) the PROOF master server");
1779 { std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
1788 while ((sl = (
TSlave *)nxs()))
1802 gROOT->GetListOfSockets()->Remove(
this);
1814 gROOT->GetListOfProofs()->Remove(
this);
1833 Int_t perf,
const char *image,
const char *workdir)
1855 const char *image,
const char *msd,
Int_t nwk)
1875 while ((sl = (
TSlave *)next())) {
1902 if (
fImage == sl->fImage) {
1912 TSlave *replace_slave = 0;
1915 if (sl->fImage == sl2->fImage) {
1920 replace_slave = sl2;
1927 Error(
"FindUniqueSlaves",
"TSlave is neither Master nor Slave");
1940 if (replace_slave) {
2032 if (
s.Contains(
"Total MB's processed:")) {
2033 s.ReplaceAll(
"Total MB's processed:",
"");
2035 }
else if (
s.Contains(
"Total real time used (s):")) {
2036 s.ReplaceAll(
"Total real time used (s):",
"");
2038 }
else if (
s.Contains(
"Total CPU time used (s):")) {
2039 s.ReplaceAll(
"Total CPU time used (s):",
"");
2048 Printf(
" Real/CPU time (s): %.3f / %.3f; workers: %d; processed: %.2f MBs",
2152 Printf(
"+++ Options: \"A\" show all queries known to server");
2153 Printf(
"+++ \"L\" show retrieved queries");
2154 Printf(
"+++ \"F\" full listing of query info");
2155 Printf(
"+++ \"H\" print this menu");
2157 Printf(
"+++ (case insensitive)");
2159 Printf(
"+++ Use Retrieve(<#>) to retrieve the full"
2160 " query results from the master");
2161 Printf(
"+++ e.g. Retrieve(8)");
2191 Printf(
"+++ Queries processed during this session: selector: %d, draw: %d",
2193 while ((pq = nxq()))
2200 Printf(
"+++ Queries processed during this session: selector: %d, draw: %d",
2207 Printf(
"+++ Queries available locally: %d", listlocal->
GetSize());
2208 TIter nxlq(listlocal);
2209 while ((pq = nxlq()))
2225 while (
TSlave *sl =
dynamic_cast<TSlave*
>(nextSlave())) {
2235 if (submasters.
GetSize() > 0) {
2243 EmitVA(
"IsDataReady(Long64_t,Long64_t)", 2, totalbytes, bytesready);
2246 Info(
"IsDataReady",
"%lld / %lld (%s)",
2247 bytesready, totalbytes,
fDataReady?
"READY":
"NOT READY");
2265 if (slaves->
GetSize() == 0)
return;
2270 while ((sl = (
TSlave *)next())) {
2289 Int_t nparallel = 0;
2290 while (
TSlave* sl =
dynamic_cast<TSlave*
>(nextSlave()))
2291 if (sl->GetParallel() >= 0)
2292 nparallel += sl->GetParallel();
2315 while ((slave = (
TSlave *) next()) != 0) {
2325 while ((activeslave = (
TSlave *) nextactive())) {
2334 while ((badslave = (
TSlave *) nextbad())) {
2343 MarkBad(slave,
"could not send kPROOF_GETSLAVEINFO message");
2351 MarkBad(slave,
"could not send kPROOF_GETSLAVEINFO message");
2356 Error(
"GetSlaveInfo",
"TSlave is neither Master nor Slave");
2377 while ((sl = (
TSlave*) next())) {
2407 if (workers->
GetSize() == 0)
return 0;
2410 TIter next(workers);
2413 while ((wrk = (
TSlave *)next())) {
2416 MarkBad(wrk,
"could not send group priority");
2458 if (!slaves || slaves->
GetSize() == 0)
return 0;
2464 while ((sl = (
TSlave *)next())) {
2467 MarkBad(sl,
"could not broadcast request");
2550 if (slaves->
GetSize() == 0)
return 0;
2556 while ((sl = (
TSlave *)next())) {
2559 MarkBad(sl,
"could not send broadcast-raw request");
2593 if (wrks->
GetSize() == 0)
return 0;
2599 while ((wrk = (
TSlave *)next())) {
2602 Error(
"BroadcastFile",
2603 "problems sending file to worker %s (%s)",
2663 rc =
Collect(mon, timeout, endtype, deactonfail);
2689 while ((sl = (
TSlave*) next())) {
2694 rc =
Collect(mon, timeout, endtype, deactonfail);
2721 rc =
Collect(mon, timeout, endtype, deactonfail);
2740 Info(
"Collect",
">>>>>> Entering collect responses #%04d", collectId);
2770 int cnt = 0, rc = 0;
2775 Info(
"Collect",
"#%04d: active: %d", collectId, mon->
GetActive());
2787 while ((nact = mon->
GetActive(sto)) && (nto < 0 || nto > 0)) {
2793 if (al && al->
GetSize() > 0) {
2794 Info(
"Collect",
" %d node(s) still active:", al->
GetSize());
2797 while ((xs = (
TSocket *)nxs())) {
2818 Info(
"Collect",
"#%04d: now active: %d", collectId, mon->
GetActive());
2823 Info(
"Collect",
"Will invoke Select() #%04d", collectId);
2829 if (rc == 1 || (rc == 2 && !savedMonitor)) {
2833 Info(
"Collect",
"#%04d: deactivating %p (active: %d, %p)", collectId,
2836 }
else if (rc == 2) {
2842 Info(
"Collect",
"save monitor: deactivating %p (active: %d, %p)",
2859 if (
s == (
TSocket *)(-1) && nto > 0)
2871 while (mxws && (wrk = (
TSlave *) nxwr())) {
2876 Info(
"Collect",
"worker %s was asked to send its output to master",
2901 if (al && al->
GetSize() > 0) {
2903 Info(
"Collect",
" %d node(s) went in timeout:", al->
GetSize());
2906 while ((xs = (
TSocket *)nxs())) {
2934 Info(
"Collect",
"<<<<<< Exiting collect responses #%04d", collectId);
2951 Error(
"PollForNewWorkers",
"Can't invoke: not on a master -- should not happen!");
2955 Error(
"PollForNewWorkers",
"No ProofServ available -- should not happen!");
2965 TIter next(reqWorkers);
2976 while (( sl =
dynamic_cast<TSlave *
>(nextInner()) )) {
2983 if (found)
delete ni;
2985 newWorkers->
Add(ni);
2987 Info(
"PollForNewWorkers",
"New worker found: %s:%s",
2997 if (nNewWorkers > 0) {
2999 Info(
"PollForNewWorkers",
"Requesting to add %d new worker(s)", newWorkers->
GetEntries());
3002 Error(
"PollForNewWorkers",
"Call to AddWorkers() failed (got %d < 0)", rv);
3009 Info(
"PollForNewWorkers",
"No new worker found");
3038 if ((recvrc =
s->Recv(mess)) < 0) {
3040 Info(
"CollectInputFrom",
"%p: got %d from Recv()",
s, recvrc);
3045 if (
s->Reconnect() == 0) {
3051 MarkBad(
s,
"problems receiving a message in TProof::CollectInputFrom(...)");
3057 MarkBad(
s,
"undefined message in TProof::CollectInputFrom(...)");
3065 if (rc == 1 && (endtype >= 0) && (what != endtype))
3085 Warning(
"HandleInputMessage",
"given an empty message or undefined worker");
3091 Warning(
"HandleInputMessage",
"worker socket is undefined");
3099 Info(
"HandleInputMessage",
"got type %d from '%s'", what, sl->
GetOrdinal());
3118 MarkBad(
s,
"received kPROOF_FATAL");
3131 Info(
"HandleInputMessage",
"received kPROOF_STOP from %s: disabling any further collection this worker",
3163 Info(
"HandleInputMessage",
"%s: kPROOF_GETPACKET", sl->
GetOrdinal());
3205 Info(
"HandleInputMessage",
"%s: kPROOF_LOGFILE: size: %d", sl->
GetOrdinal(), size);
3213 Info(
"HandleInputMessage",
"%s: kPROOF_LOGDONE: status %d parallel %d",
3247 Info(
"HandleInputMessage",
3263 rc = (async) ? 0 : 1;
3288 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_PACKAGE_LIST: enter");
3298 Error(
"HandleInputMessage",
3299 "kPROOF_PACKAGE_LIST: kListEnabledPackages: TList not found in message!");
3308 Error(
"HandleInputMessage",
3309 "kPROOF_PACKAGE_LIST: kListPackages: TList not found in message!");
3313 Error(
"HandleInputMessage",
"kPROOF_PACKAGE_LIST: unknown type: %d",
type);
3326 Info(
"HandleInputMessage",
"kPROOF_SENDOUTPUT: enter (%s)", sl->
GetOrdinal());
3342 Info(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: enter");
3346 Info(
"HandleInputMessage",
"finalization on %s started ...", prefix);
3372 Warning(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: query result missing");
3374 }
else if (
type > 0) {
3384 }
else if (
IsTty() || changed) {
3385 fprintf(stderr,
"%s\r", msg.
Data());
3405 while ((xo = nxin()))
3417 Warning(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: player undefined!");
3428 Info(
"HandleInputMessage",
"%s: kPROOF_OUTPUTLIST: enter", sl->
GetOrdinal());
3450 Info(
"HandleInputMessage",
3451 "%s: kPROOF_OUTPUTLIST: query result missing", sl->
GetOrdinal());
3460 Info(
"HandleInputMessage",
3461 "%s: kPROOF_OUTPUTLIST: outputlist is empty", sl->
GetOrdinal());
3465 "%s: kPROOF_OUTPUTLIST: player undefined!", sl->
GetOrdinal());
3475 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_QUERYLIST: enter");
3488 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_RETRIEVE: enter");
3497 Info(
"HandleInputMessage",
3498 "kPROOF_RETRIEVE: query result missing or player undefined");
3505 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_MAXQUERIES: enter");
3509 Printf(
"Number of queries fully kept remotely: %d", max);
3515 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SERVERSTARTED: enter");
3517 UInt_t tot = 0, done = 0;
3521 (*mess) >> action >> tot >> done >> st;
3528 char msg[512] = {0};
3530 snprintf(msg, 512,
"%s: OK (%d %s) \n",
3533 snprintf(msg, 512,
"%s: %d out of %d (%d %%)\r",
3534 action.
Data(), done, tot, frac);
3537 fprintf(stderr,
"%s", msg);
3547 m << action << tot << done << st;
3555 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_DATASET_STATUS: enter");
3557 UInt_t tot = 0, done = 0;
3561 (*mess) >> action >> tot >> done >> st;
3567 char msg[512] = {0};
3569 snprintf(msg, 512,
"%s: OK (%d %s) \n",
3572 snprintf(msg, 512,
"%s: %d out of %d (%d %%)\r",
3573 action.
Data(), done, tot, frac);
3576 fprintf(stderr,
"%s", msg);
3586 m << action << tot << done << st;
3594 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_STARTPROCESS: enter");
3614 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"Preparation time: %f s",
fPrepTime);
3619 (*mess) >> selec >> dsz >>
first >> nent;
3621 if (!
gROOT->IsBatch()) {
3640 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_ENDINIT: enter");
3659 Info(
"HandleInputMessage",
"%s: got kPROOF_SETIDLE", sl->
GetOrdinal());
3662 "%s: got kPROOF_SETIDLE but no running workers ! protocol error?",
3676 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_QUERYSUBMITTED: enter");
3701 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SESSIONTAG: enter");
3724 Info(
"HandleInputMessage",
"kPROOF_FEEDBACK: enter");
3737 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_AUTOBIN: enter");
3756 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_PROGRESS: enter");
3765 Float_t initTime, procTime, evtrti, mbrti;
3766 (*mess) >>
total >> processed >> bytesread
3767 >> initTime >> procTime
3771 initTime, procTime, evtrti, mbrti);
3776 (*mess) >>
total >> processed;
3790 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_STOPPROCESS: enter");
3797 (*mess) >> status >> abort;
3799 (*mess) >> events >> abort;
3805 TList *listOfMissingFiles = 0;
3806 if (!(listOfMissingFiles = (
TList *)
GetOutput(
"MissingFiles"))) {
3807 listOfMissingFiles =
new TList();
3808 listOfMissingFiles->
SetName(
"MissingFiles");
3827 Emit(
"StopProcess(Bool_t)", abort);
3833 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SUBMERGER: enter");
3840 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_GETSLAVEINFO: enter");
3847 Error(
"HandleInputMessage",
"kPROOF_GETSLAVEINFO: no list received!");
3891 Info(
"HandleInputMessage",
"kPROOF_VALIDATE_DSET: enter");
3895 Error(
"HandleInputMessage",
"kPROOF_VALIDATE_DSET: fDSet not set");
3904 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_DATA_READY: enter");
3907 (*mess) >> dataready >> totalbytes >> bytesready;
3920 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_MESSAGE: enter");
3933 fprintf(stderr,
"%s%c", msg.
Data(), (lfeed ?
'\n' :
'\r'));
3941 fprintf(stderr,
"%s%c", msg.
Data(), (lfeed ?
'\n' :
'\r'));
3957 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_VERSARCHCOMP: %s", vac.
Data());
3970 Error(
"HandleInputMessage",
"unknown command received from '%s' (what = %d)",
3998 Int_t merger_id = -1;
3999 (*mess) >> merger_id;
4002 Info(
"HandleSubmerger",
"kOutputSent: Worker %s:%d:%s had sent its output to merger #%d",
4006 Error(
"HandleSubmerger",
"kOutputSize: #%d not in list ", merger_id);
4019 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"all mergers removed ... ");
4023 PDB(kSubmerger, 2)
Error(
"HandleSubmerger",
"kOutputSent: received not on endmaster!");
4030 Int_t merger_id = -1;
4031 (*mess) >> merger_id;
4033 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"kMergerDown: #%d ", merger_id);
4036 Error(
"HandleSubmerger",
"kMergerDown: #%d not in list ", merger_id);
4059 while ((o = nxo())) {
4062 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"kMergerDown:%d: exit", merger_id);
4070 Info(
"HandleSubmerger",
"worker %s reported as finished ", sl->
GetOrdinal());
4074 Info(
"HandleSubmerger",
"finalization on %s started ...", prefix);
4078 Int_t output_size = 0;
4079 Int_t merging_port = 0;
4080 (*mess) >> output_size >> merging_port;
4082 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
4083 "kOutputSize: Worker %s:%d:%s reports %d output objects (+ available port %d)",
4099 msg.
Form(
"%s: Invalid request: cannot start %d mergers for %d workers",
4109 if (activeWorkers > 1) {
4115 msg.
Form(
"%s: Number of mergers set dynamically to %d (for %d workers)",
4118 msg.
Form(
"%s: No mergers will be used for %d workers",
4119 prefix, activeWorkers);
4128 if (activeWorkers > 1) {
4133 while ((wrk = nxwk())) {
4141 msg.
Form(
"%s: Number of mergers set to %d (for %d workers), one for each slave host",
4144 msg.
Form(
"%s: No mergers will be used for %d workers",
4145 prefix, activeWorkers);
4153 msg.
Form(
"%s: Number of mergers set by user to %d (for %d workers)",
4221 Error(
"HandleSubMerger",
"kOutputSize received not on endmaster!");
4233 Int_t merger_id = -1;
4247 if (merger_id == -1) {
4254 Info(
"RedirectWorker",
"redirecting worker %s to merger %d", sl->
GetOrdinal(), merger_id);
4256 PDB(kSubmerger, 2)
Info(
"RedirectWorker",
"redirecting output to merger #%d", merger_id);
4258 Error(
"RedirectWorker",
"#%d not in list ", merger_id);
4264 sendoutput << merger_id;
4265 sendoutput << hname;
4267 s->Send(sendoutput);
4279 while (fLastAssignedMerger < fMergers->GetSize() &&
4291 while (fLastAssignedMerger < fMergers->GetSize() &&
4312 PDB(kSubmerger, 2)
Info(
"AskForOutput",
4313 "worker %s was asked to send its output to master",
4317 sendoutput <<
TString(
"master");
4333 Info(
"UpdateDialog",
4334 "processing was aborted - %lld events processed",
4349 Info(
"UpdateDialog",
4350 "processing was stopped - %lld events processed",
4367 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
4372 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
4388 while ((sl = (
TSlave*) next()))
4401 while ((sl = (
TSlave*) next()))
4413 Int_t active_mergers = 0;
4418 if (mi->
IsActive()) active_mergers++;
4421 return active_mergers;
4430 Info(
"CreateMerger",
"worker %s will be merger ", sl->
GetOrdinal());
4432 PDB(kSubmerger, 2)
Info(
"CreateMerger",
"Begin");
4436 Info(
"CreateMerger",
"cannot create merger on port %d - exit", port);
4453 Int_t workersOnHost = 0;
4457 workers = workersOnHost - 1;
4461 msg.
Form(
"worker %s on host %s will be merger for %d additional workers", sl->
GetOrdinal(), sl->
GetName(), workers);
4473 bemerger << workers;
4476 PDB(kSubmerger,2)
Info(
"CreateMerger",
4477 "merger #%d (port: %d) for %d workers started",
4485 PDB(kSubmerger, 2)
Info(
"CreateMerger",
"exit");
4496 std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
4502 Error(
"MarkBad",
"worker instance undefined: protocol error? ");
4523 msg.
Form(
"\n +++ Message from %s : marking %s:%d (%s) as bad\n +++ Reason: %s",
4525 (reason && strlen(reason)) ? reason :
"unknown");
4530 msg +=
TString::Format(
"\n\n +++ Most likely your code crashed on worker %s at %s:%d.\n",
4535 msg +=
TString::Format(
" +++ Please check the session logs for error messages either using\n");
4539 msg +=
TString::Format(
" +++ root [] TProof::Mgr(\"%s\")->GetSessionLogs()->"
4543 msg +=
TString::Format(
" +++ root [] TProof::Mgr(\"%s\")->GetSessionLogs()->"
4544 "Display(\"*\")\n\n", thisurl.
Data());
4547 }
else if (reason) {
4549 Info(
"MarkBad",
"worker %s at %s:%d asked to terminate",
4557 TList *listOfMissingFiles = 0;
4558 if (!(listOfMissingFiles = (
TList *)
GetOutput(
"MissingFiles"))) {
4559 listOfMissingFiles =
new TList();
4560 listOfMissingFiles->
SetName(
"MissingFiles");
4569 packetizer->
MarkBad(wrk, 0, &listOfMissingFiles);
4625 Int_t mergersCount = -1;
4627 if (mc) mergersCount = mc->
GetVal();
4629 if (mergersCount == 0) {
4631 if (activeWorkers > 1) {
4657 std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
4672 Warning(
"TerminateWorker",
"worker instance undefined: protocol error? ");
4682 Info(
"TerminateWorker",
"connection to worker is already down: cannot"
4683 " send termination message");
4695 if (ord && strlen(ord) > 0) {
4700 while ((wrk = (
TSlave *)nxw())) {
4701 if (all || !strcmp(wrk->
GetOrdinal(), ord)) {
4733 if (slaves->
GetSize() == 0)
return 0;
4739 while ((sl = (
TSlave *)next())) {
4741 if (sl->
Ping() == -1) {
4742 MarkBad(sl,
"ping unsuccessful");
4759 if (slaves->
GetSize() == 0)
return;
4764 while ((sl = (
TSlave *)next())) {
4782 IsValid() ?
"valid" :
"invalid");
4785 Printf(
"ROOT version|rev: %s|%s",
gROOT->GetVersion(),
gROOT->GetGitCommit());
4792 Printf(
"Security context: %s",
4796 Printf(
"Security context: Error - No connection");
4797 Printf(
"Proofd protocol version: Error - No connection");
4809 Printf(
"*** Master server %s (parallel mode, %d workers):",
4812 Printf(
"*** Master server %s (sequential mode):",
4826 Printf(
"ROOT version|rev|tag: %s", ver.
Data());
4844 Printf(
"List of workers:");
4847 while (
TSlave* sl =
dynamic_cast<TSlave*
>(nextslave())) {
4848 if (!sl->IsValid())
continue;
4855 if (sl->GetSocket()->Send(mess) == -1)
4856 const_cast<TProof*
>(
this)->
MarkBad(sl,
"could not send kPROOF_PRINT request");
4860 Error(
"Print",
"TSlave is neither Master nor Worker");
4912 TString outfile, dsname, stfopt;
4916 while (opt.
Tokenize(oo, from,
"[; ]")) {
4919 iof = opt.
Index(tagf);
4922 iof = opt.
Index(tagf);
4925 iod = opt.
Index(tagd);
4928 iod = opt.
Index(tagd);
4931 ios = opt.
Index(tags);
4933 tags =
"savetofile";
4934 ios = opt.
Index(tags);
4939 Error(
"HandleOutputOptions",
"options 'of'/'outfile' and 'ds'/'dataset' are incompatible!");
4945 from = iof + tagf.
Length();
4947 Error(
"HandleOutputOptions",
"could not extract output file settings string! (%s)", opt.
Data());
4955 from = iod + tagd.
Length();
4956 if (!opt.
Tokenize(dsname, from,
"[; ]"))
4957 if (
gDebug > 0)
Info(
"HandleOutputOptions",
"no dataset name found: use default");
4966 if (dsname.
IsNull()) dsname =
"dataset_<qtag>";
4970 from = ios + tags.
Length();
4971 if (!opt.
Tokenize(stfopt, from,
"[; ]"))
4972 if (
gDebug > 0)
Info(
"HandleOutputOptions",
"save-to-file not found: use default");
4980 Error(
"HandleOutputOptions",
"save-to-file option must be a digit! (%s)", stfopt.
Data());
5004 Warning(
"HandleOutputOptions",
5005 "directory '%s' for the output file does not exists or is not writable:"
5026 if (
Exec(
"gProofServ->GetDataDir()",
"0",
kTRUE) == 0) {
5031 ddir = os->
GetString()(fst+1, lst-fst-1);
5033 emsg =
"could not find 'const char *' string in macro log! cannot continue";
5036 emsg =
"could not retrieve master data directory info! cannot continue";
5039 Error(
"HandleOutputOptions",
"%s", emsg.
Data());
5043 if (!ddir.
IsNull()) ddir +=
"/";
5045 outfile.
Form(
"%s<file>", ddir.
Data());
5066 Warning(
"HandleOutputOptions",
"Dataset required bu Save-To-File disabled: enabling!");
5067 stfopt.
Form(
"%d", ostf+1);
5082 if (target ==
"ds|V") {
5087 while ((o = nxo())) {
5099 Warning(
"HandleOutputOptions",
"could not retrieve TFileCollection for dataset '%s'", dsname.
Data());
5102 Warning(
"HandleOutputOptions",
"dataset not found!");
5114 Printf(
" Output successfully copied to %s", target.
Data());
5115 targetcopied =
kTRUE;
5117 Warning(
"HandleOutputOptions",
"problems copying output to %s", target.
Data());
5125 while ((o = nxo())) {
5129 if (pof == pf && targetcopied)
continue;
5134 Printf(
" Output successfully copied to %s", target.
Data());
5137 Warning(
"HandleOutputOptions",
"problems copying output to %s", target.
Data());
5147 Warning(
"HandleOutputOptions",
5154 if (!target.
IsNull() && !swapcopied) {
5157 if (!fout || (fout && fout->
IsZombie())) {
5159 Warning(
"HandleOutputOptions",
"problems opening output file %s", target.
Data());
5164 while ((o = nxo())) {
5177 Printf(
" Output saved to %s", target.
Data());
5208 if (action == 0 || (action == 1 && optfb.
IsNull())) {
5213 ifb = opt.
Index(tag);
5215 if (ifb ==
kNPOS)
return;
5216 from = ifb + tag.
Length();
5219 Warning(
"SetFeedback",
"could not extract feedback string! Ignoring ...");
5232 if (
nm ==
"stats") {
5234 startdraw.
Form(
"gDirectory->Add(new TStatsFeedback((TProof *)%p))",
this);
5241 stopdraw.
Form(
"TObject *o = gDirectory->FindObject(\"%s\"); "
5242 " if (o && strcmp(o->ClassName(), \"TStatsFeedback\")) "
5254 startdraw.
Form(
"gDirectory->Add(new TDrawFeedback((TProof *)%p))",
this);
5259 stopdraw.
Form(
"TObject *o = gDirectory->FindObject(\"%s\"); "
5260 " if (o && strcmp(o->ClassName(), \"TDrawFeedback\")) "
5284 TString opt(option), optfb, outfile;
5286 if (opt.Contains(
"fb=") || opt.Contains(
"feedback="))
SetFeedback(opt, optfb, 0);
5295 Info(
"Process",
"session is in waiting or processing status: switch to asynchronous mode");
5297 opt.ReplaceAll(
"SYNC",
"");
5331 if (selector && strlen(selector)) {
5336 Error(
"Process",
"neither a selecrot file nor a selector object have"
5337 " been specified: cannot process!");
5359 if (sst) rv = sst->
GetVal();
5391 Info(
"Process",
"server version < 5.18/00:"
5392 " processing of TFileCollection not supported");
5403 if (selector && strlen(selector)) {
5408 Error(
"Process",
"neither a selecrot file nor a selector object have"
5409 " been specified: cannot process!");
5481 Info(
"Process",
"processing 'by name' not supported by the server");
5485 TString dsname, fname(dsetname);
5491 const char *separator = (fname.
EndsWith(
",")) ?
"," :
"|";
5497 if (
f && !(
f->IsZombie())) {
5498 const Int_t blen = 8192;
5502 Long64_t len = (rest > blen - 1) ? blen - 1 : rest;
5503 if (
f->ReadBuffer(buf, len)) {
5504 Error(
"Process",
"problems reading from file '%s'", fname.
Data());
5515 if (rest > 0)
return -1;
5517 Error(
"Process",
"could not open file '%s'", fname.
Data());
5529 Info(
"Process",
"processing multi-dataset read from file '%s':", fname.
Data());
5530 Info(
"Process",
" '%s'", dsname.
Data());
5537 Info(
"Process",
"multi-dataset processing not supported by the server");
5544 while (names.Tokenize(
name, from,
"[, |]")) {
5550 if (ienl ==
kNPOS) {
5551 ienl =
name.Index(
"<<");
5552 if (ienl !=
kNPOS) {
5554 ienl += strlen(
"<<");
5558 ienl += strlen(
"?enl=");
5564 if (idxc !=
kNPOS) {
5566 if (idxs !=
kNPOS) {
5567 obj = newname(idxs+1, newname.
Length());
5568 dir = newname(idxc+1, newname.
Length());
5572 obj = newname(idxc+1, newname.
Length());
5577 Error(
"Process",
"bad name syntax (%s): please use"
5578 " a '#' after the dataset name",
name.Data());
5586 }
else if (obj != dsobj || dir != dsdir) {
5588 Warning(
"Process",
"'obj' or 'dir' specification not consistent w/ the first given: ignore");
5591 if (ienl !=
kNPOS) {
5601 if ((el =
dynamic_cast<TEntryList *
>(oel))) {
5612 if (
f && !(
f->IsZombie()) &&
f->GetListOfKeys()) {
5613 TIter nxk(
f->GetListOfKeys());
5615 while ((k = (
TKey *) nxk())) {
5631 Warning(
"Process",
"multiple entry lists found in file '%s': the first one is taken;\n"
5632 "if this is not what you want, load first the content in memory"
5633 "and select it by name ", enl.
Data());
5638 Warning(
"Process",
"file '%s' cannot be open or is empty - ignoring", enl.
Data());
5660 TDSet *dset =
new TDSet(dsname, dsobj, dsdir);
5669 if (selector && strlen(selector)) {
5674 Error(
"Process",
"neither a selector file nor a selector object have"
5675 " been specified: cannot process!");
5699 Info(
"Process",
"server version < 5.17/04: generic processing not supported");
5708 if (selector && strlen(selector)) {
5709 retval =
Process(dset, selector, option,
n);
5713 Error(
"Process",
"neither a selector file nor a selector object have"
5714 " been specified: cannot process!");
5738 Error(
"Process",
"server version < 5.33/02:"
5739 "processing by object not supported");
5743 Error(
"Process",
"selector object undefined!");
5764 Error(
"Process",
"server version < 5.33/02:"
5765 "processing by object not supported");
5769 Error(
"Process",
"selector object undefined!");
5787 Error(
"Process",
"server version < 5.33/02:"
5788 "processing by object not supported");
5792 Error(
"Process",
"selector object undefined!");
5811 Error(
"Process",
"server version < 5.33/02:"
5812 "processing by object not supported");
5816 Error(
"Process",
"selector object undefined!");
5864 Info(
"Finalize",
"query #%d not found", qry);
5898 Info(
"Finalize",
"query already finalized:"
5899 " use Finalize(<qry>,kTRUE) to force new retrieval");
5928 Info(
"Retrieve",
"query #%d not found", qry);
5930 Info(
"Retrieve",
"positive argument required - do nothing");
5957 if (!farc || (farc && !(farc->
IsOpen()))) {
5958 Info(
"Retrieve",
"archive file cannot be open (%s)", path);
5973 Info(
"Retrieve",
"query not found after retrieve");
5993 Info(
"Remove",
"query #%d not found", qry);
5995 Info(
"Remove",
"positive argument required - do nothing");
6037 Info(
"Archive",
"query #%d not found", qry);
6039 Info(
"Archive",
"positive argument required - do nothing");
6096 if (mode && (strlen(mode) > 0)) {
6099 if (
m.Contains(
"ASYN")) {
6101 }
else if (
m.Contains(
"SYNC")) {
6107 Info(
"GetQueryMode",
"query mode is set to: %s", qmode ==
kSync ?
6120 const char *selection,
Option_t *option,
6127 Info(
"DrawSelect",
"not idle, asynchronous Draw not supported");
6156 const char *selection,
Option_t *option,
6160 Info(
"Process",
"processing 'by name' not supported by the server");
6168 if (idxc !=
kNPOS) {
6170 if (idxs !=
kNPOS) {
6181 Error(
"DrawSelect",
"bad name syntax (%s): please use"
6182 " a '#' after the dataset name", dsetname);
6200 Info(
"StopProcess",
"enter %d", abort);
6223 while ((sl = (
TSlave *)next()))
6234 Emit(
"DisableGoAsyn()");
6245 Info(
"GoAsynchronous",
"functionality not supported by the server - ignoring");
6253 Info(
"GoAsynchronous",
"either idle or already in asynchronous mode - ignoring");
6262 const Int_t kMAXBUF = 16384;
6276 Warning(
"RecvLogFile",
"file descriptor for outputs undefined (%d):"
6277 " will not log msgs", fdout);
6280 lseek(fdout, (off_t) 0, SEEK_END);
6286 while (filesize < size) {
6287 left =
Int_t(size - filesize);
6288 if (left >= kMAXBUF)
6290 rec =
s->RecvRaw(&buf, left);
6291 filesize = (rec > 0) ? (filesize + rec) : filesize;
6300 w = write(fdout, p,
r);
6303 SysError(
"RecvLogFile",
"error writing to unit: %d", fdout);
6309 }
else if (rec < 0) {
6310 Error(
"RecvLogFile",
"error during receiving log file");
6316 EmitVA(
"LogMessage(const char*,Bool_t)", 2, buf,
kFALSE);
6335 if (!msg || (len = strlen(msg)) <= 0)
6339 Int_t lsfx = (sfx) ? strlen(sfx) : 0;
6346 Warning(
"NotifyLogMsg",
"file descriptor for outputs undefined (%d):"
6347 " will not notify msgs", fdout);
6350 lseek(fdout, (off_t) 0, SEEK_END);
6356 char *p = (
char *)msg;
6359 Int_t w = write(fdout, p,
r);
6361 SysError(
"NotifyLogMsg",
"error writing to unit: %d", fdout);
6369 if (write(fdout, sfx, lsfx) != lsfx)
6370 SysError(
"NotifyLogMsg",
"error writing to unit: %d", fdout);
6376 EmitVA(
"LogMessage(const char*,Bool_t)", 2, msg,
kFALSE);
6390 Info(
"LogMessage",
"Enter ... %s, 'all: %s", msg ? msg :
"",
6391 all ?
"true" :
"false");
6393 if (
gROOT->IsBatch()) {
6394 PDB(kGlobal,1)
Info(
"LogMessage",
"GUI not started - use TProof::ShowLog()");
6399 EmitVA(
"LogMessage(const char*,Bool_t)", 2, msg, all);
6405 lseek(fileno(
fLogFileR), (off_t) 0, SEEK_SET);
6407 const Int_t kMAXBUF = 32768;
6411 while ((len = read(fileno(
fLogFileR), buf, kMAXBUF-1)) < 0 &&
6416 Error(
"LogMessage",
"error reading log file");
6422 EmitVA(
"LogMessage(const char*,Bool_t)", 2, buf,
kFALSE);
6446 while ((sl = (
TSlave *)next())) {
6449 MarkBad(sl,
"could not send kPROOF_GROUPVIEW message");
6473 if (
s.Length() > 0 &&
6474 (
s.BeginsWith(
".L") ||
s.BeginsWith(
".x") ||
s.BeginsWith(
".X"))) {
6513 if (!
s.Length())
return 0;
6522 Error(
"Exec",
"file %s could not be transfered", fn);
6533 Error(
"Exec",
"macro %s not found", filename.
Data());
6541 gROOT->ProcessLine(cmd);
6569 if (!
s.Length())
return 0;
6573 gROOT->ProcessLine(cmd);
6581 if (strcmp(ord,
"master") && strcmp(ord,
"0"))
ActivateWorker(ord);
6641 TString cmd =
TString::Format(
"if (gEnv->Lookup(\"%s\")) { gEnv->GetValue(\"%s\",\"\"); }", rcenv, rcenv);
6655 Printf(
"%s: %d", rcenv, env);
6667 TString cmd =
TString::Format(
"if (gEnv->Lookup(\"%s\")) { gEnv->GetValue(\"%s\",\"\"); }", rcenv, rcenv);
6681 Printf(
"%s: %f", rcenv, env);
6693 TString cmd =
TString::Format(
"if (gEnv->Lookup(\"%s\")) { gEnv->GetValue(\"%s\",\"\"); }", rcenv, rcenv);
6702 env = os->
GetString()(fst+1, lst-fst-1);
6784 FileMap_t::const_iterator it;
6791 if ((*md5) != md.
fMD5) {
6814 Error(
"CheckFile",
"could not calculate local MD5 check sum - dont send");
6828 Error(
"CheckFile",
"could not calculate local MD5 check sum - dont send");
6875 slaves =
new TList();
6879 if (slaves->
GetSize() == 0)
return 0;
6895 Error(
"SendFile",
"cannot stat file %s",
file);
6900 Error(
"SendFile",
"empty file %s",
file);
6912 if ((opt &
kCp)) cpopt |=
kCp;
6915 const Int_t kMAXBUF = 32768;
6922 if (fnam ==
"cache") {
6924 }
else if (fnam.
IsNull()) {
6929 while ((sl = (
TSlave *)next())) {
6939 Info(
"SendFile",
"%s sending file %s to: %s:%s (%d)", snd,
6947 snprintf(buf, kMAXBUF,
"%s %d %lld %d", fnam.
Data(), bin, siz, fw);
6949 MarkBad(sl,
"could not send kPROOF_SENDFILE request");
6955 lseek(fd, 0, SEEK_SET);
6963 SysError(
"SendFile",
"error reading from file %s",
file);
6970 SysError(
"SendFile",
"error writing to slave %s:%s (now offline)",
6972 MarkBad(sl,
"sendraw failure");
6993 return (
fStatus != 0) ? -1 : nsl;
7003 if (!
IsValid() || !obj)
return -1;
7029 if (!
IsValid() || !obj)
return -1;
7058 snprintf(str, 32,
"%d %u", level, mask);
7076 Warning(
"SetRealTimeLog",
"session is invalid - do nothing");
7094 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"request all nodes");
7096 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"request %d node%s", nodes,
7097 nodes == 1 ?
"" :
"s");
7100 mess << nodes << random;
7104 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"got %d node%s",
n,
n == 1 ?
"" :
"s");
7123 Printf(
"PROOF set to sequential mode");
7125 TString subfix = (
n == 1) ?
"" :
"s";
7127 subfix +=
", randomly selected";
7128 Printf(
"PROOF set to parallel mode (%d worker%s)",
n, subfix.
Data());
7146 Error(
"GoMoreParallel",
"can't invoke here -- should not happen!");
7150 Error(
"GoMoreParallel",
"no ProofServ available nor Lite -- should not happen!");
7156 Int_t nAddedWorkers = 0;
7158 while (((nAddedWorkers < nWorkersToAdd) || (nWorkersToAdd == -1)) &&
7159 (( sl =
dynamic_cast<TSlave *
>( next() ) ))) {
7164 Error(
"GoMoreParallel",
"TSlave is neither a Master nor a Slave: %s:%s",
7171 (strcmp(
"IGNORE", sl->
GetImage()) == 0)) {
7173 Info(
"GoMoreParallel",
"Worker %s:%s won't be considered",
7180 Info(
"GoMoreParallel",
"Worker %s:%s is already active: skipping",
7196 Info(
"GoMoreParallel",
"Worker %s:%s marked as active!",
7201 Error(
"GoMoreParallel",
"Dynamic addition of master is not supported");
7209 Info(
"GoMoreParallel",
"Will invoke AskStatistics() -- implies a Collect()");
7214 Info(
"GoMoreParallel",
"Will invoke FindUniqueSlaves()");
7219 Info(
"GoMoreParallel",
"Will invoke SendGroupView()");
7223 Info(
"GoMoreParallel",
"Will invoke GetParallel()");
7229 s.Form(
"PROOF just went more parallel (%d additional worker%s, %d worker%s total)",
7230 nAddedWorkers, (nAddedWorkers == 1) ?
"" :
"s",
7231 nTotalWorkers, (nTotalWorkers == 1) ?
"" :
"s");
7233 Info(
"GoMoreParallel",
"%s",
s.Data());
7235 return nTotalWorkers;
7259 while ((sl = (
TSlave *)nxt())) {
7261 if (strcmp(
"IGNORE", sl->
GetImage()) == 0)
continue;
7264 Error(
"GoParallel",
"TSlave is neither Master nor Slave");
7277 while (
cnt < nwrks) {
7287 Error(
"GoParallel",
"attaching to candidate!");
7293 Int_t slavenodes = 0;
7304 Int_t nn = (nodes < 0) ? -1 : nodes-
cnt;
7312 MarkBad(sl,
"could not send kPROOF_PARALLEL or kPROOF_LOGFILE request");
7328 MarkBad(sl,
"collect failed after kPROOF_PARALLEL or kPROOF_LOGFILE request");
7355 printf(
"PROOF set to sequential mode\n");
7357 printf(
"PROOF set to parallel mode (%d worker%s)\n",
7358 n,
n == 1 ?
"" :
"s");
7361 PDB(kGlobal,1)
Info(
"GoParallel",
"got %d node%s",
n,
n == 1 ?
"" :
"s");
7397 if (doask && !
Prompt(
"Do you really want to remove all data files"))
return;
7398 if (
fManager->
Rm(
"~/data/*",
"-rf",
"all") < 0)
7399 Warning(
"ClearData",
"problems purging data directory");
7403 if (!dsname || strlen(dsname) <= 0) {
7404 Error(
"ClearData",
"dataset name mandatory when removing a full dataset");
7409 Error(
"ClearData",
"dataset '%s' does not exists", dsname);
7415 Error(
"ClearData",
"could not retrieve info about dataset '%s'", dsname);
7420 " of dataset '%s'", dsname);
7427 Int_t rfiles = 0, nfiles =
fc->GetList()->GetSize();
7433 Error(
"ClearData",
"GetFirstUrl() returns NULL for '%s' - skipping",
7444 while (nurl-- && fi->
NextUrl()) {
7458 Error(
"ClearData",
"problems removing '%s'",
file.Data());
7465 fprintf(stderr,
"\n");
7473 TString outtmp(
"ProofClearData_");
7476 Error(
"ClearData",
"cannot create temp file for logs");
7486 in.open(outtmp.
Data());
7487 if (!in.is_open()) {
7488 Error(
"ClearData",
"could not open temp file for logs: %s", outtmp.
Data());
7499 if (
line.IsNull())
continue;
7503 if (!
line.Tokenize(host, from,
"| "))
continue;
7505 if (!
line.Tokenize(
file, from,
"| "))
continue;
7516 Info(
"ClearData",
"added info for: h:%s, f:%s", host.
Data(),
file.Data());
7518 Warning(
"ClearData",
"found incomplete line: '%s'",
line.Data());
7528 if (!fcmap || (fcmap && fcmap->
GetSize() <= 0)) {
7530 Warning(
"ClearData",
"no dataset beloning to '%s'", sel.
Data());
7549 while (nurl-- && fi->
NextUrl()) {
7558 Info(
"ClearData",
"found: host: %s, file: %s", host.
Data(),
file.Data());
7569 "registered file '%s' not found in the full list!",
7585 Info(
"ClearData",
"%d unregistered files to be removed:", nfiles);
7589 " unregistered data files", nfiles);
7603 Error(
"ClearData",
"problems removing '%s' on host '%s'",
7611 fprintf(stderr,
"\n");
7626 if (!pp.
Contains(
"[y/N]")) pp +=
" [y/N]";
7628 if (
a !=
"\n" &&
a[0] !=
'y' &&
a[0] !=
'Y' &&
a[0] !=
'n' &&
a[0] !=
'N') {
7629 Printf(
"Please answer y, Y, n or N");
7632 }
else if (
a ==
"\n" ||
a[0] ==
'n' ||
a[0] ==
'N') {
7645 fprintf(stderr,
"[TProof::ClearData] Total %5d files\t|", t);
7647 if (
r > 0 && t > 0) {
7649 fprintf(stderr,
"=");
7650 else if (
l == 20*
r/t)
7651 fprintf(stderr,
">");
7652 else if (
l > 20*
r/t)
7653 fprintf(stderr,
".");
7655 fprintf(stderr,
"=");
7657 fprintf(stderr,
"| %.02f %% \r", 100.0*(t ? (
r/t) : 1));
7719 while (fgets(
line, 2048, fin)) {
7722 if (write(fdout,
line,
r) < 0) {
7724 "errno %d writing to file descriptor %d",
7753 Warning(
"ShowPackages",
"file descriptor for outputs undefined (%p):"
7754 " will not log msgs", fout);
7757 lseek(fileno(fout), (off_t) 0, SEEK_END);
7834 if (!package || !package[0]) {
7835 Error(
"ClearPackage",
"need to specify a package name");
7862 if (!pack || strlen(pack) <= 0) {
7863 Error(
"DisablePackage",
"need to specify a package name");
7874 Warning(
"DisablePackage",
"problem removing locally package '%s'", pack);
7884 path.
Form(
"~/packages/%s", pack);
7885 if (
fManager->
Rm(path,
"-rf",
"all") != -1) {
7921 Warning(
"DisablePackages",
"problem removing packages locally");
7930 if (
fManager->
Rm(
"~/packages/*",
"-rf",
"all") != -1) {
7968 if (!package || !package[0]) {
7969 Error(
"BuildPackage",
"need to specify a package name");
8008 if (buildOnClient) {
8014 if (!
IsLite() || !buildOnClient) {
8047 if (!package || !package[0]) {
8048 Error(
"LoadPackage",
"need to specify a package name");
8059 if (
fPackMgr->
Load(package, loadopts) == -1)
return -1;
8063 if (loadopts) mess << loadopts;
8072 Info(
"LoadPackage",
"Sending load message to selected workers only");
8074 if (doCollect)
Collect(workers, -1, -1, deactivateOnFailure);
8091 if (!package || !package[0]) {
8092 Error(
"UnloadPackage",
"need to specify a package name");
8103 Warning(
"UnloadPackage",
"unable to remove symlink to %s", package);
8174 if (loadopts && strlen(loadopts)) {
8192 Warning(
"EnablePackage",
"'checkversion' option unknown from argument: '%s' - ignored", ocv.
Data());
8195 Info(
"EnablePackage",
"setting check version option from argument: %d", cvopt);
8199 if (lcv !=
kNPOS && fcv == 0) ocv += os->
String()[lcv];
8205 if (!optls) optls =
new TList;
8211 Warning(
"EnablePackage",
"remote server does not support options: ignoring the option string");
8236 if (!package || !package[0]) {
8237 Error(
"EnablePackage",
"need to specify a package name");
8255 if (ocv ==
"off" || ocv ==
"0")
8257 else if (ocv ==
"on" || ocv ==
"1")
8260 Warning(
"EnablePackage",
"'checkversion' option unknown from rootrc: '%s' - ignored", ocv.
Data());
8265 chkveropt = pcv->
GetVal();
8271 Info(
"EnablePackage",
"using check version option: %d", chkveropt);
8276 TList *optls = (loadopts && loadopts->
GetSize() > 0) ? loadopts : 0;
8278 Warning(
"EnablePackage",
"remote server does not support options: ignoring the option list");
8282 if (
LoadPackage(pac, notOnClient, optls, workers) == -1)
8310 Error(
"DownloadPackage",
"the manager is undefined!");
8316 if (!parname.EndsWith(
".par")) parname +=
".par";
8317 src.
Form(
"packages/%s", parname.Data());
8318 if (!dstdir || strlen(dstdir) <= 0) {
8319 dst.
Form(
"./%s", parname.Data());
8326 Error(
"DownloadPackage",
8327 "could not create the destination directory '%s' (errno: %d)",
8332 Error(
"DownloadPackage",
8333 "destination path '%s' exist but is not a directory!", dstdir);
8336 dst.
Form(
"%s/%s", dstdir, parname.Data());
8346 Warning(
"DownloadPackage",
"problems restoring output");
8359 if (
s.Contains(
"*** Global Package cache")) {
8361 s.Remove(0,
s.Last(
':') + 1);
8362 s.Remove(
s.Last(
' '));
8365 }
else if (
s.Contains(
"*** Package cache")) {
8370 if (isGlobal &&
s.Contains(parname)) {
8371 src.
Form(
"%s/%s", globaldir.
Data(), parname.Data());
8382 Error(
"DownloadPackage",
"problems downloading '%s' (src:%s, dst:%s)",
8386 Info(
"DownloadPackage",
"'%s' cross-checked against master repository (local path: %s)",
8424 if (par.EndsWith(
".par")) {
8426 name = base(0, base.
Length() - strlen(
".par"));
8441 Info(
"UploadPackage",
"global package found (%s): no upload needed",
8444 }
else if (xrc < 0) {
8445 Error(
"UploadPackage",
"PAR file '%s' not found", par.Data());
8477 smsg.
Form(
"+%s", par.Data());
8483 mess << smsg << (*md5);
8486 mess2 << smsg << (*md5);
8489 mess3 << smsg << (*md5);
8504 TIter next(workers);
8506 while ((sl = (
TSlave *) next())) {
8520 Error(
"UploadPackage",
"%s: problems uploading file %s",
8539 Error(
"UploadPackage",
"%s: unpacking of package %s failed",
8549 while ((ma = (
TSlave *) nextmaster())) {
8559 Error(
"UploadPackage",
"package %s did not exist on submaster %s",
8575 if (macro && strlen(macro) > 0) {
8579 gROOT->SetMacroPath(macrop);
8606 if (!macro || !macro[0]) {
8607 Error(
"Load",
"need to specify a macro name");
8617 TString addsname, implname = macro;
8619 if (icom !=
kNPOS) {
8620 addsname = implname(icom + 1, implname.
Length());
8624 TString bmsg(basemacro), acmode, args, io;
8630 Info(
"Load",
"macro '%s' does not contain a '.': do nothing", macro);
8646 Info(
"Load",
"no associated header file found: tried: %s %s",
8647 h.Data(), headname.
Data());
8654 if (!addsname.
IsNull()) {
8657 while (addsname.
Tokenize(fn, from,
",")) {
8659 Error(
"Load",
"additional file '%s' not found", fn.
Data());
8667 }
else if (!addincs.
Contains(dirn)) {
8679 Error(
"Load",
"problems sending implementation file %s", implname.
Data());
8684 Error(
"Load",
"problems sending header file %s", headname.
Data());
8689 TIter nxfn(&addfiles);
8694 Error(
"Load",
"problems sending additional file %s", os->
GetName());
8746 PDB(kGlobal, 1)
Info(
"Load",
"adding loaded macro: %s", macro);
8763 if (uniqueWorkers) {
8779 while ((wrk = (
TSlave *)nxw())) {
8796 PDB(kGlobal, 1)
Info(
"Load",
"adding loaded macro: %s", macro);
8819 if ((!libpath || !libpath[0])) {
8821 Info(
"AddDynamicPath",
"list is empty - nothing to do");
8833 if (libpath && strlen(libpath)) {
8864 if ((!incpath || !incpath[0])) {
8866 Info(
"AddIncludePath",
"list is empty - nothing to do");
8878 if (incpath && strlen(incpath)) {
8908 if ((!libpath || !libpath[0])) {
8910 Info(
"RemoveDynamicPath",
"list is empty - nothing to do");
8922 if (libpath && strlen(libpath))
8942 if ((!incpath || !incpath[0])) {
8944 Info(
"RemoveIncludePath",
"list is empty - nothing to do");
8956 if (incpath && strlen(incpath))
8977 if ((
type !=
"lib") && (
type !=
"inc")) {
8978 Error(
"HandleLibIncPath",
"unknown action type: %s - protocol error?",
type.Data());
8987 if (path.
Length() > 0 && path !=
"-") {
8989 Warning(
"HandleLibIncPath",
"decomposing path %s", path.
Data());
8996 if (
type ==
"lib") {
9018 Info(
"HandleLibIncPath",
9019 "libpath %s does not exist or cannot be read - not added", xlib.
Data());
9039 Info(
"HandleLibIncPath",
9040 "incpath %s does not exist or cannot be read - not added", xinc.
Data());
9047 if (
type ==
"lib") {
9120 (*fPrintProgress)(
total, processed, procTime, bytesread);
9125 fprintf(stderr,
"[TProof::Progress] Total %lld events\t|",
total);
9127 for (
int l = 0;
l < 20;
l++) {
9129 if (
l < 20*processed/
total)
9130 fprintf(stderr,
"=");
9131 else if (
l == 20*processed/
total)
9132 fprintf(stderr,
">");
9133 else if (
l > 20*processed/
total)
9134 fprintf(stderr,
".");
9136 fprintf(stderr,
"=");
9138 Float_t evtrti = (procTime > 0. && processed > 0) ? processed / procTime : -1.;
9139 Float_t mbsrti = (procTime > 0. && bytesread > 0) ? bytesread / procTime : -1.;
9142 Float_t remainingTime = (
total >= processed) ? (
total - processed) / evtrti : -1;
9144 const Float_t toK = 1024., toM = 1048576., toG = 1073741824.;
9145 if (mbsrti >= toG) {
9148 }
else if (mbsrti >= toM) {
9151 }
else if (mbsrti >= toK) {
9155 fprintf(stderr,
"| %.02f %% [%.1f evts/s, %.1f %s, time left: %.1f s]\r",
9156 (
total ? ((100.0*processed)/
total) : 100.0), evtrti, mbsrti, sunit.
Data(), remainingTime);
9158 fprintf(stderr,
"| %.02f %% [%.1f evts/s, time left: %.1f s]\r",
9159 (
total ? ((100.0*processed)/
total) : 100.0), evtrti, remainingTime);
9162 fprintf(stderr,
"| %.02f %%\r",
9163 (
total ? ((100.0*processed)/
total) : 100.0));
9165 if (processed >=
total) {
9166 fprintf(stderr,
"\n Query processing time: %.1f s\n", procTime);
9182 Info(
"Progress",
"%2f (%lld/%lld)", 100.*processed/
total, processed,
total);
9184 if (
gROOT->IsBatch()) {
9189 EmitVA(
"Progress(Long64_t,Long64_t)", 2,
total, processed);
9202 Info(
"Progress",
"%lld %lld %lld %f %f %f %f",
total, processed, bytesread,
9203 initTime, procTime, evtrti, mbrti);
9205 if (
gROOT->IsBatch()) {
9210 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
9211 7,
total, processed, bytesread, initTime, procTime, evtrti, mbrti);
9224 Info(
"Progress",
"%lld %lld %lld %f %f %f %f %d %f",
total, processed, bytesread,
9225 initTime, procTime, evtrti, mbrti, actw, eses);
9227 if (
gROOT->IsBatch()) {
9232 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
9233 10,
total, processed, bytesread, initTime, procTime, evtrti, mbrti, actw, tses, eses);
9250 Emit(
"Feedback(TList *objs)", (
Long_t) objs);
9259 Info(
"CloseProgressDialog",
9266 Emit(
"CloseProgressDialog()");
9276 Info(
"ResetProgressDialog",
"(%s,%d,%lld,%lld)", sel, sz, fst, ent);
9278 EmitVA(
"ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)",
9279 4, sel, sz, fst, ent);
9288 Info(
"StartupMessage",
"(%s,%d,%d,%d)", msg, st, done,
total);
9290 EmitVA(
"StartupMessage(const char*,Bool_t,Int_t,Int_t)",
9291 4, msg, st, done,
total);
9300 Info(
"DataSetStatus",
"(%s,%d,%d,%d)", msg, st, done,
total);
9302 EmitVA(
"DataSetStatus(const char*,Bool_t,Int_t,Int_t)",
9303 4, msg, st, done,
total);
9316 char msg[512] = {0};
9318 snprintf(msg, 512,
"%s: OK (%d %s) \n",
9319 action,tot,
type.Data());
9321 snprintf(msg, 512,
"%s: %d out of %d (%d %%)\r",
9322 action, done, tot, frac);
9325 fprintf(stderr,
"%s", msg);
9334 mess <<
TString(action) << tot << done << st;
9345 Info(
"QueryResultReady",
"ref: %s", ref);
9347 Emit(
"QueryResultReady(const char*)",ref);
9367 while (
TSlave *sl =
dynamic_cast<TSlave*
>(nextSlave())) {
9372 sllist->
SetName(sl->GetName());
9373 slholder.
Add(sllist);
9376 elemholder.
Add(elemlist);
9377 nodes.
Add(
new TPair(sllist, elemlist));
9379 sllist =
dynamic_cast<TList*
>(p->
Key());
9381 if (sllist) sllist->
Add(sl);
9387 for (
Int_t i = 0; i < 2; i++) {
9391 if (elem->GetValid())
continue;
9423 Warning(
"ValidateDSet",
"invalid values from TPair! Protocol error?");
9431 Warning(
"ValidateDSet",
"no node to allocate TDSetElement to - ignoring");
9439 TIter nextNode(&nodes);
9441 while (
TPair *node =
dynamic_cast<TPair*
>(nextNode())) {
9442 TList *slaves =
dynamic_cast<TList*
>(node->Key());
9443 TList *setelements =
dynamic_cast<TList*
>(node->Value());
9444 if (!slaves || !setelements)
continue;
9448 for (
Int_t i=0; i<nslaves; i++) {
9452 for (
Int_t j = (i*nelements)/nslaves;
9453 j < ((i+1)*nelements)/nslaves;
9470 PDB(kGlobal,1)
Info(
"ValidateDSet",
9471 "Sending TDSet with %d elements to slave %s"
9473 copyset.GetListOfElements()->GetSize(),
9483 Info(
"ValidateDSet",
"Calling Collect");
9560 if (datafile && strlen(datafile) > 0) {
9592 if (dataFile.
Length() > 0) {
9594 Info(
"SendInputDataFile",
"broadcasting %s", dataFile.
Data());
9627 if (
f &&
f->GetListOfKeys() &&
f->GetListOfKeys()->GetSize() > 0)
9641 if (!list_ok && !file_ok)
return;
9644 if (file_ok && !list_ok) {
9647 }
else if (!file_ok && list_ok) {
9657 while ((obj = next())) {
9667 }
else if (file_ok && list_ok) {
9687 while ((obj = next())) {
9693 Error(
"PrepareInputDataFile",
"could not open %s for updating", dataFile.
Data());
9753 !out || (out && out->
GetSize() <= 0))
return o;
9760 while ((o = nxo())) {
9766 if (!
f || (
f &&
f->IsZombie())) {
9767 ::Warning(
"TProof::GetOutput",
"problems opening file %s", fn.
Data());
9770 if (
f && (o =
f->Get(
name)))
return o;
9798 Warning(
"SetParameter",
"player undefined! Ignoring");
9817 Warning(
"SetParameter",
"player undefined! Ignoring");
9836 Warning(
"SetParameter",
"player undefined! Ignoring");
9855 Warning(
"SetParameter",
"player undefined! Ignoring");
9874 Warning(
"SetParameter",
"player undefined! Ignoring");
9894 Warning(
"GetParameter",
"player undefined! Ignoring");
9910 if (!wildcard) wildcard =
"";
9912 Int_t nch = strlen(wildcard);
9918 while ((p = next())) {
9920 if (nch &&
s != wildcard &&
s.Index(re) ==
kNPOS)
continue;
9935 if (!wildcard) wildcard =
"";
9937 Int_t nch = strlen(wildcard);
9942 while ((p = next())) {
9944 if (nch &&
s != wildcard &&
s.Index(re) ==
kNPOS)
continue;
9965 Info(
"AddFeedback",
"Adding object \"%s\" to feedback",
name);
9996 Info(
"",
"no feedback requested");
10020 Error(
"GetTreeHeader",
"No connection");
10037 d = soc->
Recv(reply);
10040 Error(
"GetTreeHeader",
"Error getting a replay from the master.Result %d", (
int)
d);
10047 if (
s1 ==
"Success")
10052 Info(
"GetTreeHeader",
"%s, message size: %d, entries: %d",
10055 Info(
"GetTreeHeader",
"tree header retrieval failed");
10219 msg << start << end;
10235 off_t nowlog = lseek(fileno(
fLogFileR), (off_t) 0, SEEK_CUR);
10238 "problem lseeking log file to current position (errno: %d)",
TSystem::GetErrno());
10243 off_t startlog = nowlog;
10244 off_t endlog = lseek(fileno(
fLogFileR), (off_t) 0, SEEK_END);
10253 if (tolog <= 0)
return maclog;
10256 if (lseek(fileno(
fLogFileR), startlog, SEEK_SET) < 0) {
10258 "problem lseeking log file to start position (errno: %d)",
TSystem::GetErrno());
10267 Int_t wanted = (tolog >
sizeof(
line)) ?
sizeof(
line) : tolog;
10278 wanted = (tolog >
sizeof(
line)) ?
sizeof(
line) : tolog;
10282 if (lseek(fileno(
fLogFileR), nowlog, SEEK_SET) < 0) {
10284 "problem lseeking log file to original position (errno: %d)",
TSystem::GetErrno());
10303 EmitVA(
"LogMessage(const char*,Bool_t)", 2,
l->GetName(),
kFALSE);
10323 if (strstr(queryref, qr->
GetTitle()) &&
10324 strstr(queryref, qr->
GetName()))
10347 off_t nowlog = lseek(fileno(
fLogFileR), (off_t) 0, SEEK_CUR);
10354 off_t startlog = nowlog;
10355 off_t endlog = lseek(fileno(
fLogFileR), (off_t) 0, SEEK_END);
10361 lseek(fileno(
fLogFileR), nowlog, SEEK_SET);
10364 lseek(fileno(
fLogFileR), (off_t) 0, SEEK_SET);
10365 }
else if (qry != -1) {
10376 }
else if (qry > 0) {
10379 TIter nxq(queries);
10386 TIter nxq(queries);
10397 Info(
"ShowLog",
"query %d not found in list", qry);
10408 lseek(fileno(
fLogFileR), startlog, SEEK_SET);
10414 Int_t wanted = (tolog >
sizeof(
line)) ?
sizeof(
line) : tolog;
10423 Int_t w = write(fileno(stdout), p,
r);
10425 SysError(
"ShowLog",
"error writing to stdout");
10432 tolog -= strlen(
line);
10437 const char *opt = Getline(
"More (y/n)? [y]");
10447 wanted = (tolog >
sizeof(
line)) ?
sizeof(
line) : tolog;
10456 if (write(fileno(stdout),
"\n", 1) != 1)
10457 SysError(
"ShowLog",
"error writing to stdout");
10462 lseek(fileno(
fLogFileR), nowlog, SEEK_SET);
10474 if (
d->GetProof()) {
10500 Error(
"Detach",
"corrupted worker instance: wrk:%p, sock:%p", sl,
s);
10507 if (shutdown && !
IsIdle()) {
10512 timeout = (timeout > 20) ? timeout : 20;
10537 if (
d->GetProof() ==
this) {
10610 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10641 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10659 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10685 Info(
"RegisterDataSet",
10686 "functionality not available: the server does not have dataset support");
10690 if (!dataSetName || strlen(dataSetName) <= 0) {
10691 Info(
"RegisterDataSet",
"specifying a dataset name is mandatory");
10699 parallelverify =
kTRUE;
10707 mess <<
TString(dataSetName);
10715 Error(
"RegisterDataSet",
"dataset was not saved");
10721 if (!parallelverify)
return result;
10726 Error(
"RegisterDataSet",
"problems verifying dataset '%s'", dataSetName);
10743 Info(
"SetDataSetTreeName",
"functionality not supported by the server");
10747 if (!dataset || strlen(dataset) <= 0) {
10748 Info(
"SetDataSetTreeName",
"specifying a dataset name is mandatory");
10752 if (!treename || strlen(treename) <= 0) {
10753 Info(
"SetDataSetTreeName",
"specifying a tree name is mandatory");
10769 Error(
"SetDataSetTreeName",
"some error occured: default tree name not changed");
10785 Info(
"GetDataSets",
10786 "functionality not available: the server does not have dataset support");
10789 if (
fProtocol < 31 && strstr(optStr,
":lite:"))
10790 Warning(
"GetDataSets",
"'lite' option not supported by the server");
10794 mess <<
TString(uri ? uri :
"");
10795 mess <<
TString(optStr ? optStr :
"");
10799 TMap *dataSetMap = 0;
10801 Error(
"GetDataSets",
"error receiving datasets information");
10807 Error(
"GetDataSets",
"error receiving datasets");
10809 Error(
"GetDataSets",
"message not found or wrong type (%p)", retMess);
10822 Info(
"ShowDataSets",
10823 "functionality not available: the server does not have dataset support");
10829 mess <<
TString(uri ? uri :
"");
10830 mess <<
TString(optStr ? optStr :
"");
10835 Error(
"ShowDataSets",
"error receiving datasets information");
10844 Info(
"ExistsDataSet",
"functionality not available: the server has an"
10845 " incompatible version of TFileInfo");
10849 if (!dataset || strlen(dataset) <= 0) {
10850 Error(
"ExistsDataSet",
"dataset name missing");
10872 Info(
"ClearDataSetCache",
"functionality not available on server");
10890 Info(
"ShowDataSetCache",
"functionality not available on server");
10913 Info(
"GetDataSet",
"functionality not available: the server has an"
10914 " incompatible version of TFileInfo");
10918 if (!uri || strlen(uri) <= 0) {
10919 Info(
"GetDataSet",
"specifying a dataset name is mandatory");
10926 nameMess <<
TString(optStr ? optStr:
"");
10928 Error(
"GetDataSet",
"sending request failed");
10933 Error(
"GetDataSet",
"error receiving datasets information");
10939 Error(
"GetDataSet",
"error reading list of files");
10941 Error(
"GetDataSet",
"message not found or wrong type (%p)", retMess);
10954 fileList->
Print(opt);
10957 Warning(
"ShowDataSet",
"no such dataset: %s", uri);
10968 nameMess <<
TString(uri?uri:
"");
10969 nameMess <<
TString(optStr?optStr:
"");
10971 Error(
"RemoveDataSet",
"sending request failed");
10985 Error (
"FindDataSets",
"not yet implemented");
10986 return (
TList *) 0;
10996 Error(
"RequestStagingDataSet",
10997 "functionality not supported by the server");
11008 Error(
"RequestStagingDataSet",
"staging request was unsuccessful");
11022 Error(
"CancelStagingDataSet",
11023 "functionality not supported by the server");
11034 Error(
"CancelStagingDataSet",
"cancel staging request was unsuccessful");
11049 Error(
"GetStagingStatusDataSet",
11050 "functionality not supported by the server");
11056 nameMess <<
TString(dataset);
11058 Error(
"GetStagingStatusDataSet",
"sending request failed");
11066 Error(
"GetStagingStatusDataSet",
"problem processing the request");
11074 Error(
"GetStagingStatusDataSet",
"error reading list of files");
11077 Error(
"GetStagingStatusDataSet",
11078 "response message not found or wrong type (%p)", retMess);
11106 Info(
"VerifyDataSet",
"functionality not available: the server has an"
11107 " incompatible version of TFileInfo");
11112 if (!uri || (uri && strlen(uri) <= 0)) {
11113 Error(
"VerifyDataSet",
"dataset name is is mandatory");
11117 Int_t nmissingfiles = 0;
11122 Info(
"VerifyDataSet",
"Master-only verification");
11132 Info(
"VerifyDataSet",
"no such dataset %s", uri);
11136 return nmissingfiles;
11141 Error(
"VerifyDataSet",
"PROOF is in sequential mode (no workers): cannot do parallel verification.");
11142 Error(
"VerifyDataSet",
"Either start PROOF with some workers or force sequential adding 'S' as option.");
11156 Int_t nmissingfiles = 0;
11171 Int_t oldifiip = -1;
11176 const char* mss=
"";
11178 const char* stageoption=
"";
11196 if (oldifiip > -1) {
11197 SetParameter(
"PROOF_IncludeFileInfoInPacket", oldifiip);
11205 Int_t ntouched = 0;
11211 while ((obj = nxtout())) {
11216 while ((fiindout = (
TFileInfo*) nxt())) {
11217 lfiindout->
Add(fiindout);
11223 nmissingfiles += pdisappeared->
GetVal();
11226 if (pnopened &&
TString(pnopened->
GetName()).BeginsWith(
"PROOF_NoFilesOpened_")) {
11227 nopened += pnopened->
GetVal();
11230 if (pntouched &&
TString(pntouched->
GetName()).BeginsWith(
"PROOF_NoFilesTouched_")) {
11231 ntouched += pntouched->
GetVal();
11234 if (pchanged_ds &&
TString(pchanged_ds->
GetName()).BeginsWith(
"PROOF_DataSetChanged_")) {
11239 Info(
"VerifyDataSetParallel",
"%s: changed? %d (# files opened = %d, # files touched = %d,"
11240 " # missing files = %d)",
11241 uri, changed_ds, nopened, ntouched, nmissingfiles);
11243 return nmissingfiles;
11252 Info(
"UploadDataSet",
"Lite-session: functionality not implemented");
11258 mess <<
TString(optStr?optStr:
"");
11262 TMap *groupQuotaMap = 0;
11264 Info(
"GetDataSetQuota",
"could not receive quota");
11270 Error(
"GetDataSetQuota",
"error getting quotas");
11272 Error(
"GetDataSetQuota",
"message not found or wrong type (%p)", retMess);
11275 return groupQuotaMap;
11285 Info(
"ShowDataSetQuota",
11286 "functionality not available: the server does not have dataset support");
11291 Info(
"UploadDataSet",
"Lite-session: functionality not implemented");
11302 Error(
"ShowDataSetQuota",
"error receiving quota information");
11365 if (!ord || strlen(ord) <= 0) {
11366 Info(
"ModifyWorkerLists",
11367 "an ordinal number - e.g. \"0.4\" or \"*\" for all - is required as input");
11371 Info(
"ModifyWorkerLists",
"ord: '%s' (add: %d, save: %d)", ord, add, save);
11408 while(oo.Tokenize(o, from,
","))
11418 while ((wrk = (
TSlave *) nxw())) {
11441 if (!allord && ords) {
11442 if (os) ords->
Remove(os);
11443 if (ords->
GetSize() == 0)
break;
11450 if (!fw && ords && ords->
GetSize() > 0) {
11453 while ((os = nxo())) {
11455 while ((wrk = (
TSlave *) nxw()))
11458 if (!oo.
IsNull()) oo +=
",";
11463 Warning(
"ModifyWorkerLists",
"worker(s) '%s' not found!", oo.
Data());
11483 mess << action <<
TString(ord);
11490 Warning(
"ModifyWorkerLists",
"request not completely full filled");
11492 Error(
"ModifyWorkerLists",
"request failed");
11497 if (oo.Contains(
","))
11498 Warning(
"ModifyWorkerLists",
"block request not supported by server: splitting into pieces ...");
11500 while(oo.Tokenize(o, from,
",")) {
11502 mess << action << o;
11557 const char *confdir,
Int_t loglevel)
11559 const char *pn =
"TProof::Open";
11567 ::Error(pn,
"plugin manager not found");
11571 if (
gROOT->IsBatch()) {
11572 ::Error(pn,
"we are in batch mode, cannot show PROOF Session Viewer");
11578 ::Error(pn,
"no plugin found for TSessionViewer");
11582 ::Error(pn,
"plugin for TSessionViewer could not be loaded");
11609 TString sport = opts(it + strlen(
"tunnel="), opts.
Length());
11615 host = sport(0, ic);
11616 sport.
Remove(0, ic + 1);
11627 port = sport.
Atoi();
11630 ::Info(
"TProof::Open",
"using tunnel at %s:%d", host.
Data(), port);
11636 "problems parsing tunnelling info from options: %s", opts.
Data());
11644 if (opts.
Length() > 0) {
11650 locid = opts.
Atoi();
11672 if (!proof || !proof->
IsValid()) {
11674 ::Error(pn,
"new session could not be attached");
11683 if (!proof || !proof->
IsValid()) {
11684 ::Error(pn,
"new session could not be created");
11717 "unable to initialize a valid manager instance");
11789 Error(
"SaveWorkerInfo",
"gProofServ undefined");
11795 Warning(
"SaveWorkerInfo",
"all relevant worker lists is undefined");
11802 FILE *fwrk = fopen(fnwrk.
Data(),
"w");
11804 Error(
"SaveWorkerInfo",
11805 "cannot open %s for writing (errno: %d)", fnwrk.
Data(), errno);
11815 if (reLogTag.
Match(addlogext) == 2) {
11816 addLogTag = reLogTag[1];
11822 Info(
"SaveWorkerInfo",
"request for additional line with ext: '%s'", addlogext.
Data());
11832 while ((wrk = (
TSlave *) nxa())) {
11835 if (re.
Match(logfile) == 2) logfile = re[1];
11838 fprintf(fwrk,
"%s@%s:%d %d %s %s.log\n",
11842 if (addlogext.
Length() > 0) {
11843 fprintf(fwrk,
"%s@%s:%d %d %s(%s) %s.%s\n",
11853 while ((wrk = (
TSlave *) nxb())) {
11855 if (re.
Match(logfile) == 2) logfile = re[1];
11859 fprintf(fwrk,
"%s@%s:%d 0 %s %s.log\n",
11872 if (re.
Match(logfile) == 2) logfile = re[1];
11874 fprintf(fwrk,
"%s 2 %s %s.log\n",
11877 if (addlogext.
Length() > 0) {
11878 fprintf(fwrk,
"%s 2 %s(%s) %s.%s\n",
11880 logfile.
Data(), addlogext.
Data());
11994 if (!dset || !input || !mgr) {
11995 emsg.
Form(
"invalid inputs (%p, %p, %p)", dset, input, mgr);
12005 TString dsns(dsname), enlname;
12007 if (eli !=
kNPOS) {
12008 enlname = dsns(eli + strlen(
"?enl="), dsns.Length());
12009 dsns.Remove(eli, dsns.Length()-eli);
12013 if (dsname.
BeginsWith(
"TFileCollection:")) {
12019 emsg.
Form(
"TFileCollection %s not found in input list", dset->
GetName());
12030 input->
Add(
new TNamed(
"PROOF_LookupOpt", lookupopt.
Data()));
12052 if (validEnl && validSdsn && ((
fc = mgr->
GetDataSet(dsns) ))) {
12075 dsns = dsname.
Data();
12078 while (dsns.Tokenize(dsn1, from1,
"[, ]")) {
12081 while (dsn1.
Tokenize(dsn2, from2,
"|")) {
12084 if (ienl !=
kNPOS) {
12085 enlname = dsn2(ienl + 5, dsn2.
Length());
12122 if (!datasets || datasets->
GetSize() <= 0) {
12123 emsg.
Form(
"no dataset(s) found on the master corresponding to: %s", dsname.
Data());
12128 emsg.
Form(
"dataset pointer is null: corruption? - aborting");
12135 lookupopt =
gEnv->
GetValue(
"Proof.LookupOpt",
"stagedOnly");
12136 input->
Add(
new TNamed(
"PROOF_LookupOpt", lookupopt.
Data()));
12156 if (!dsTree.
IsNull() && dsTree !=
"/") {
12159 if (idx !=
kNPOS) {
12161 tree.Remove(0, idx);
12172 TList *srvmapslist = srvmapsref;
12178 if (srvmapsref && !srvmapslist) {
12179 msg.
Form(
"+++ Info: dataset server mapping(s) DISABLED by user");
12180 }
else if (srvmapsref && srvmapslist && srvmapslist != srvmapsref) {
12181 msg.
Form(
"+++ Info: dataset server mapping(s) modified by user");
12182 }
else if (!srvmapsref && srvmapslist) {
12183 msg.
Form(
"+++ Info: dataset server mapping(s) added by user");
12195 TIter nxds(datasets);
12196 while ((pair = (
TPair *) nxds())) {
12206 " entry list %s not found", os->
GetName()));
12211 " no sub-lists in entry-list!"));
12221 if (!ds->
Add(files, dsTree, availableOnly, missingFiles)) {
12222 emsg.
Form(
"error integrating dataset %s", dataset->
GetName());
12231 if (!dset->
Add(files, dsTree, availableOnly, missingFiles)) {
12232 emsg.
Form(
"error integrating dataset %s", dataset->
GetName());
12235 if (enl) entrylist = enl;
12237 if (missingFiles) {
12240 TIter next(missingFiles);
12242 while ((
file = next())) {
12244 listOfMissingFiles->
Add(
file);
12247 missingFiles->
Clear();
12253 while ((pair = (
TPair *) nxds())) {
12254 if (pair->
Key())
delete pair->
Key();
12261 if (srvmapslist && srvmapslist != srvmapsref) {
12272 if (listOfMissingFiles && listOfMissingFiles->
GetSize() > 0) {
12273 listOfMissingFiles->
SetName(
"MissingFiles");
12274 input->
Add(listOfMissingFiles);
12291 !cachedir || strlen(cachedir) <= 0)
return 0;
12296 if (!data && !inputdata)
return 0;
12303 if (dstname.BeginsWith(
"cache:")) {
12305 dstname.ReplaceAll(
"cache:",
"");
12306 srcname.
Form(
"%s/%s", cachedir, dstname.Data());
12308 emsg.
Form(
"input data file not found in cache (%s)", srcname.
Data());
12316 emsg.
Form(
"problems copying %s to %s", srcname.
Data(), dstname.Data());
12321 if (inputdata && inputdata->
GetSize() > 0) {
12325 inputdata->
Write();
12329 emsg.
Form(
"could not create %s", dstname.Data());
12333 emsg.
Form(
"no input data!");
12337 ::Info(
"TProof::SaveInputData",
"input data saved to %s", dstname.Data());
12342 input->
Remove(inputdata);
12363 if (!inputdata)
return 0;
12367 emsg.
Form(
"input data file not found in sandbox (%s)", fname.
Data());
12373 emsg.
Form(
"TProof object undefined or invalid: protocol error!");
12390 if (!input || !cachedir || strlen(cachedir) <= 0)
return 0;
12394 if (!inputdata)
return 0;
12399 emsg.
Form(
"input data file not found in cache (%s)", fname.
Data());
12405 added->
SetName(
"PROOF_InputObjsFromFile");
12411 emsg.
Form(
"could not get list of object keys from file");
12416 while ((k = (
TKey *)nxk())) {
12433 emsg.
Form(
"could not open %s", fname.
Data());
12446 if (!
gROOT->IsBatch()) {
12450 gROOT->GetPluginManager()->FindHandler(
"TProofProgressLog"))) {
12453 ::Error(
"TProof::LogViewer",
"cannot load the relevant plug-in");
12460 TString u = (url && strlen(url) <= 0) ?
"lite" : url;
12464 if (url && strlen(url) > 0) {
12465 ::Info(
"TProof::LogViewer",
12466 "batch mode: use TProofLog *pl = TProof::Mgr(\"%s\")->GetSessionLogs(%d)", url, idx);
12467 }
else if (url && strlen(url) <= 0) {
12468 ::Info(
"TProof::LogViewer",
12469 "batch mode: use TProofLog *pl = TProof::Mgr(\"lite\")->GetSessionLogs(%d)", idx);
12471 ::Info(
"TProof::LogViewer",
12472 "batch mode: use TProofLog *pl = TProof::Mgr(\"<master>\")->GetSessionLogs(%d)", idx);
12500 Warning(
"ShowMissingFiles",
"no (last) query found: do nothing");
12507 Info(
"ShowMissingFiles",
"no files missing in query %s:%s", xqr->
GetTitle(), xqr->
GetName());
12511 Int_t nmf = 0, ncf = 0;
12512 Long64_t msz = 0, mszzip = 0, mev = 0;
12515 TIter nxf(missing);
12536 if (msz <= 0) msz = -1;
12537 if (mszzip <= 0) mszzip = -1;
12539 if (msz > 0. || mszzip > 0.) {
12540 Printf(
" +++ %d file(s) missing, %d corrupted, i.e. %lld unprocessed events -->"
12541 " about %.2f%% of the total (%lld bytes, %lld zipped)",
12542 nmf, ncf, mev, xf * 100., msz, mszzip);
12544 Printf(
" +++ %d file(s) missing, %d corrupted, i.e. %lld unprocessed events -->"
12545 " about %.2f%% of the total", nmf, ncf, mev, xf * 100.);
12561 Warning(
"GetMissingFiles",
"no (last) query found: do nothing");
12569 Info(
"ShowMissingFiles",
"no files missing in query %s:%s", xqr->
GetTitle(), xqr->
GetName());
12579 while (
gDirectory->FindObject(fcname) && j < 1000)
12586 TIter nxf(missing);
12600 if (pf && strlen(pf) > 0) {
12604 if (withWrks)
SetParameter(
"PROOF_SlaveStatsTrace",
"");
12605 Info(
"SetPerfTree",
"saving of the performance tree enabled (%s)",
fPerfTree.
Data());
12611 Info(
"SetPerfTree",
"saving of the performance tree disabled");
12623 Error(
"SafePerfTree",
"this TProof instance is invalid!");
12629 if (ref && strlen(ref) > 0) {
12631 Error(
"SafePerfTree",
"requested to use query '%s' but player instance undefined!", ref);
12636 Error(
"SafePerfTree",
"TQueryResult instance for query '%s' could not be retrieved", ref);
12640 sref.
Form(
" for requested query '%s'", ref);
12642 if (!outls || (outls && outls->
GetSize() <= 0)) {
12643 Error(
"SafePerfTree",
"outputlist%s undefined or empty", sref.
Data());
12648 if (pf && strlen(pf)) fn = pf;
12649 if (fn.
IsNull()) fn =
"perftree.root";
12651 TFile f(fn,
"RECREATE");
12652 if (
f.IsZombie()) {
12653 Error(
"SavePerfTree",
"could not open file '%s' for writing", fn.
Data());
12658 while ((obj = nxo())) {
12663 if (objname ==
"PROOF_PerfStats" ||
12664 objname ==
"PROOF_PacketsHist" ||
12665 objname ==
"PROOF_EventsHist" ||
12666 objname ==
"PROOF_NodeHist" ||
12667 objname ==
"PROOF_LatencyHist" ||
12668 objname ==
"PROOF_ProcTimeHist" ||
12669 objname ==
"PROOF_CpuTimeHist")
12675 Info(
"SavePerfTree",
"performance information%s saved in %s ...", sref.
Data(), fn.
Data());
static void retrieve(const gsl_integration_workspace *workspace, double *a, double *b, double *r, double *e)
static RooMathCoreReg dummy
R__EXTERN TApplication * gApplication
const Bool_t kIterBackward
void Error(const char *location, const char *msgfmt,...)
static unsigned int total
const Bool_t kSortDescending
R__EXTERN TProofDebug::EProofDebugMask gProofDebugMask
R__EXTERN Int_t gProofDebugLevel
R__EXTERN TProofServ * gProofServ
static Int_t PoDCheckUrl(TString *_cluster)
This a private API function.
const char *const kPROOF_WorkerIdleTO
const char *const kPROOF_PackDir
const char *const kPROOF_ConfFile
const char *const kPROOF_WorkDir
const Long64_t kPROOF_DynWrkPollInt_s
const char *const kPROOF_InputDataFile
const char *const kPROOF_ConfDir
const Int_t kPROOF_Protocol
const char *const kPROOF_TerminateWorker
R__EXTERN TVirtualMutex * gROOTMutex
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
void Printf(const char *fmt,...)
Bool_t R_ISLNK(Int_t mode)
Bool_t R_ISDIR(Int_t mode)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
static struct mg_connection * fc(struct mg_context *ctx)
TSignalHandler * GetSignalHandler() const
Using a TBrowser one can browse all ROOT objects.
TObject * ReadObject(const TClass *cl) override
Read object from I/O buffer.
void WriteString(const char *s) override
Write string to I/O buffer.
char * ReadString(char *s, Int_t max) override
Read string from I/O buffer.
void WriteObject(const TObject *obj, Bool_t cacheReuse=kTRUE) override
Write object to I/O buffer.
A chain is a collection of files containing TTree objects.
Collection abstract base class.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
void SetName(const char *name)
virtual Int_t GetEntries() const
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
Bool_t Contains(const char *name) const
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write all objects in this collection.
Manages an element of a TDSet.
const char * GetObjName() const
const char * GetDirectory() const
Return directory where to look for object.
const char * GetMsd() const
const char * GetFileName() const
Long64_t GetFirst() const
This class implements a data set to be used for PROOF processing.
virtual void SetEntryList(TObject *aList)
Set entry (or event) list for this data set.
virtual Bool_t Add(const char *file, const char *objname=0, const char *dir=0, Long64_t first=0, Long64_t num=-1, const char *msd=0)
Add file to list of files to be analyzed.
Bool_t ElementsValid()
Check if all elements are valid.
void SetSrvMaps(TList *srvmaps=0)
Set (or unset) the list for mapping servers coordinate for files.
void Validate()
Validate the TDSet by opening files.
const char * GetType() const
TList * GetListOfElements() const
void SetDirectory(const char *dir)
Set/change directory.
void SetObjName(const char *objname)
Set/change object name.
const char * GetDirectory() const
const char * GetObjName() const
virtual TFileCollection * GetDataSet(const char *uri, const char *server=0)
Utility function used in various methods for user dataset upload.
static TList * GetDataSetSrvMaps()
Static getter for server mapping list.
static TList * ParseDataSetSrvMaps(const TString &srvmaps)
Create a server mapping list from the content of 'srvmaps' Return the list (owned by the caller) or 0...
Bool_t ParseUri(const char *uri, TString *dsGroup=0, TString *dsUser=0, TString *dsName=0, TString *dsTree=0, Bool_t onlyCurrent=kFALSE, Bool_t wildcards=kFALSE)
Parses a (relative) URI that describes a DataSet on the cluster.
Bool_t cd(const char *path=nullptr) override
Change current directory to "this" directory.
Utility class to draw objects in the feedback list during queries.
A List of entry numbers in a TTree or TChain.
virtual TList * GetLists() const
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=0)
Set the value of a resource or create a new resource.
void cd(const char *dir) const
void put(const char *file, const char *remoteName=0)
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
void Print(Option_t *option="") const
Prints the contents of the TFileCollection.
const char * GetDefaultTreeName() const
Returns the tree set with SetDefaultTreeName if set Returns the name of the first tree in the meta da...
Int_t Add(TFileInfo *info)
Add TFileInfo to the collection.
virtual void Remove()
Remove file event handler from system file handler list.
virtual void Add()
Add file event handler to system file handler list.
Class describing a generic file including meta information.
TUrl * NextUrl()
Iterator function, start iteration by calling ResetUrl().
TUrl * GetFirstUrl() const
TUrl * GetCurrentUrl() const
Return the current url.
TFileInfoMeta * GetMetaData(const char *meta=0) const
Get meta data object with specified name.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
virtual Bool_t IsOpen() const
Returns kTRUE in case file is open and kFALSE if file is not open.
static EFileType GetType(const char *name, Option_t *option="", TString *prefix=nullptr)
Resolve the file type as a function of the protocol field in 'name'.
virtual Bool_t Cp(const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
Allows to copy this file to the dst URL.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Close(Option_t *option="") override
Close 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.
TObject * Remove(TObject *obj)
Remove object from the list.
void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
const char * GetHostName() const
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 * After(const TObject *obj) const
Returns the object after object obj.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual TObjLink * FirstLink() const
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
virtual void AddAfter(const TObject *after, TObject *obj)
Insert object after object after in the list.
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
This code implements the MD5 message-digest algorithm.
static TMD5 * FileChecksum(const char *file)
Returns checksum of specified file.
Class supporting a collection of lines with C++ code.
virtual TObjString * AddLine(const char *text)
Add line with text in the list of lines of this macro.
TList * GetListOfLines() const
virtual TObjString * GetLineWith(const char *text) const
Search the first line containing text.
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
void Add(TObject *obj)
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
Bool_t AreAllWorkersAssigned()
Return if the determined number of workers has been already assigned to this merger.
Bool_t AreAllWorkersMerged()
Return if merger has already merged all workers, i.e. if it has finished its merging job.
virtual ~TMergerInfo()
Destructor.
void SetMergedWorker()
Increase number of already merged workers by 1.
void AddWorker(TSlave *sl)
Add new worker to the list of workers to be merged by this merger.
void AddMergedObjects(Int_t objects)
static void EnableSchemaEvolutionForAll(Bool_t enable=kTRUE)
Static function enabling or disabling the automatic schema evolution.
void SetWhat(UInt_t what)
Using this method one can change the message type a-posteriori In case you OR "what" with kMESS_ACK,...
virtual void RemoveAll()
Remove all sockets from the monitor.
virtual void ActivateAll()
Activate all de-activated sockets.
TSocket * Select()
Return pointer to socket for which an event is waiting.
virtual void Activate(TSocket *sock)
Activate a de-activated socket.
virtual void Add(TSocket *sock, Int_t interest=kRead)
Add socket to the monitor's active list.
Int_t GetActive(Long_t timeout=-1) const
Return number of sockets in the active list.
virtual void DeActivateAll()
De-activate all activated sockets.
virtual void DeActivate(TSocket *sock)
De-activate a socket.
TList * GetListOfActives() const
Returns a list with all active sockets.
virtual void Remove(TSocket *sock)
Remove a socket from the monitor.
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
virtual const char * GetName() const
Returns name of object.
Collectable string class.
const char * GetName() const
Returns name of object.
const TString & GetString() const
Mother of all ROOT objects.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
@ kSingleKey
write collection with single key
virtual const char * GetName() const
Returns name of object.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
R__ALWAYS_INLINE Bool_t IsZombie() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual const char * GetTitle() const
Returns title of object.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Wrapper for PCRE library (Perl Compatible Regular Expressions).
Int_t Match(const TString &s, UInt_t start=0)
Runs a match on s against the regex 'this' was created with.
The PROOF package manager contains tools to manage packages.
void Show(const char *title=0)
Show available packages.
Int_t Build(const char *pack, Int_t opt=TPackMgr::kCheckROOT)
Method to build a package.
Int_t Install(const char *par, Bool_t rmold=kFALSE)
Install package from par (unpack the file in the directory); par can be an URL for remote retrieval.
void ShowEnabled(const char *title=0)
Show enabled packages.
static Int_t FindParPath(TPackMgr *packmgr, const char *pack, TString &par)
Get the full path to PAR, looking also in the global dirs.
static Int_t RegisterGlobalPath(const char *paths)
Parse one or more paths as possible sources of packages Returns number of paths added; or -1 in case ...
Int_t Load(const char *pack, TList *optls=0)
Method to load a package taking an option list Return -1 on error, 0 otherwise.
Int_t Unload(const char *pack)
Method to unload a package.
TList * GetListOfEnabled() const
Get list of enabled packages Returns a pointer to a TList object, transferring ownership to the calle...
Int_t Remove(const char *pack=0, Bool_t dolock=kTRUE)
Remove package 'pack' If 'pack' is null or empty all packages are cleared.
TMD5 * ReadMD5(const char *pack)
Read MD5 checksum of the PAR file from the PROOF-INF/md5.txt file.
Class used by TMap to store (key,value) pairs.
const char * GetName() const
Returns name of object.
Named parameter, streamable and storable.
const AParamType & GetVal() const
const char * GetName() const
Returns name of object.
Long_t ExecPlugin(int nargs, const T &... params)
Int_t LoadPlugin()
Load the plugin library for this handler.
This class implements a plugin library manager.
TPluginHandler * FindHandler(const char *base, const char *uri=0)
Returns the handler if there exists a handler for the specified URI.
Bool_t Notify()
TProof interrupt handler.
const char * Export(Bool_t &changed)
The PROOF manager interacts with the PROOF server coordinator to create or destroy a PROOF session,...
virtual Int_t Reset(Bool_t hard=kFALSE, const char *usr=0)
Send a cleanup request for the sessions associated with the current user.
virtual TList * QuerySessions(Option_t *opt="S")
Get list of sessions accessible to this manager.
static TProofMgr * Create(const char *url, Int_t loglevel=-1, const char *alias=0, Bool_t xpd=kTRUE)
Static method returning the appropriate TProofMgr object using the plugin manager.
virtual Int_t Rm(const char *, const char *=0, const char *=0)
Run 'rm' on 'what'. Locally it is just a call to TSystem::Unlink .
virtual void Find(const char *="~/", const char *=0, const char *=0)
virtual TProof * CreateSession(const char *=0, const char *=0, Int_t=-1)
Create a new remote session (master and associated workers).
virtual Bool_t IsValid() const
virtual Int_t GetFile(const char *, const char *, const char *=0)
virtual TProof * AttachSession(Int_t, Bool_t=kFALSE)
Dummy version provided for completeness.
virtual Bool_t IsProofd() const
virtual TProofDesc * GetProofDesc(Int_t id)
Get TProofDesc instance corresponding to 'id'.
virtual Int_t Stat(const char *, FileStat_t &, const char *=0)
virtual Bool_t IsLite() const
virtual void DiscardSession(TProof *p)
Discard TProofDesc of session 'p' from the internal list.
The purpose of this class is to provide a complete node description for masters, submasters and worke...
const TString & GetMsd() const
const TString & GetImage() const
const TString & GetOrdinal() const
const TString & GetWorkDir() const
Int_t GetPerfIndex() const
const TString & GetNodeName() const
const char * GetName() const
Returns name of object.
Class to steer the merging of files produced on the workers.
const char * GetDir(Bool_t raw=kFALSE) const
const char * GetOutputFileName() const
const char * GetFileName() const
Bool_t IsRetrieve() const
void AttachList(TList *alist)
Attach to list 'alist'.
Container class for processing statistics.
Long64_t GetEntries() const
const char * GetOrdinal() const
const char * GetImage() const
TList * GetEnabledPackages() const
virtual EQueryAction GetWorkers(TList *workers, Int_t &prioritychange, Bool_t resume=kFALSE)
Get list of workers to be used from now on.
virtual void ReleaseWorker(const char *)
const char * GetUser() const
void FlushLogFile()
Reposition the read pointer in the log file to the very end.
TSocket * GetSocket() const
const char * GetGroup() const
void SendAsynMessage(const char *msg, Bool_t lf=kTRUE)
Send an asychronous message to the master / client .
static void ResolveKeywords(TString &fname, const char *path=0)
Replace <ord>, <user>, , <group>, <stag>, <qnum>, <file>, <rver> and <build> placeholders in fname.
TPackMgr * GetPackMgr() const
void SendParallel(Bool_t async=kFALSE)
Send number of parallel nodes to master or client.
const char * GetSessionDir() const
const char * GetWorkDir() const
const char * GetPrefix() const
Bool_t IsTopMaster() const
This class controls a Parallel ROOT Facility, PROOF, cluster.
void HandleLibIncPath(const char *what, Bool_t add, const char *dirs)
Handle lib, inc search paths modification request.
const char * GetSessionTag() const
Int_t Exec(const char *cmd, ESlaves list, Bool_t plusMaster)
Send command to be executed on the PROOF master and/or slaves.
Int_t GetNumberOfInactiveSlaves() const
Return number of inactive slaves, i.e.
void ShowPackages(Bool_t all=kFALSE, Bool_t redirlog=kFALSE)
List contents of package directory.
virtual void ShowData()
List contents of the data directory in the sandbox.
Int_t SendPrint(Option_t *option="")
Send print command to master server.
static TProofMgr * Mgr(const char *url)
Get instance of the effective manager for 'url' Return 0 on failure.
Bool_t CreateMerger(TSlave *sl, Int_t port)
Create a new merger.
Int_t BroadcastGroupPriority(const char *grp, Int_t priority, ESlaves list=kAllUnique)
Broadcast the group priority to all workers in the specified list.
Int_t GetNumberOfQueries()
Number of queries processed by this session.
void ActivateAsyncInput()
Activate the a-sync input handler.
TList * GetOutputNames()
FIXME: to be written.
Bool_t IsEndMaster() const
void DisableGoAsyn()
Signal to disable related switches.
void PutLog(TQueryResult *qr)
Display log of query pq into the log window frame.
void NotifyLogMsg(const char *msg, const char *sfx="\n")
Notify locally 'msg' to the appropriate units (file, stdout, window) If defined, 'sfx' is added after...
void Activate(TList *slaves=0)
Activate slave server list.
Int_t UploadPackage(const char *par, EUploadPackageOpt opt=kUntar, TList *workers=0)
Upload a PROOF archive (PAR file).
TMonitor * fCurrentMonitor
TMonitor * fAllUniqueMonitor
void SetFeedback(TString &opt, TString &optfb, Int_t action)
Extract from opt in optfb information about wanted feedback settings.
Int_t SendCurrentState(ESlaves list=kActive)
Transfer the current state of the master to the active slave servers.
void Close(Option_t *option="")
Close all open slave servers.
TList * fTerminatedSlaveInfos
TList * GetListOfSlaves() const
TMonitor * fUniqueMonitor
Int_t SetParallelSilent(Int_t nodes, Bool_t random=kFALSE)
Tell PROOF how many slaves to use in parallel.
Int_t DisablePackages()
Remove all packages.
Bool_t fProgressDialogStarted
Int_t DownloadPackage(const char *par, const char *dstdir=0)
Download a PROOF archive (PAR file) from the master package repository.
TMap * GetDataSetQuota(const char *optStr="")
returns a map of the quotas of all groups
static Int_t SaveInputData(TQueryResult *qr, const char *cachedir, TString &emsg)
Save input data file from 'cachedir' into the sandbox or create a the file with input data objects.
void ShowQueries(Option_t *opt="")
Ask the master for the list of queries.
Int_t BuildPackage(const char *package, EBuildPackageOpt opt=kBuildAll, Int_t chkveropt=TPackMgr::kCheckROOT, TList *workers=0)
Build specified package.
virtual void Print(Option_t *option="") const
Print status of PROOF cluster.
Int_t GetClientProtocol() const
virtual ~TProof()
Clean up PROOF environment.
void RemoveChain(TChain *chain)
Remove chain from data set.
void SetupWorkersEnv(TList *wrks, Bool_t increasingpool=kFALSE)
Set up packages, loaded macros, include and lib paths ...
static Int_t GetInputData(TList *input, const char *cachedir, TString &emsg)
Get the input data from the file defined in the input list.
TList * fNonUniqueMasters
Int_t SendObject(const TObject *obj, ESlaves list=kActive)
Send object to master or slave servers.
Int_t HandleOutputOptions(TString &opt, TString &target, Int_t action)
Extract from opt information about output handling settings.
TVirtualProofPlayer * fPlayer
void AddFeedback(const char *name)
Add object to feedback list.
Bool_t IsParallel() const
static void LogViewer(const char *url=0, Int_t sessionidx=0)
Start the log viewer window usign the plugin manager.
TVirtualProofPlayer * GetPlayer() const
void CleanGDirectory(TList *ol)
Remove links to objects in list 'ol' from gDirectory.
void DeActivateAsyncInput()
De-activate a-sync input handler.
Int_t BroadcastRaw(const void *buffer, Int_t length, TList *slaves)
Broadcast a raw buffer of specified length to all slaves in the specified list.
static void ResetEnvVars()
Clear the list of environment variables passed to proofserv on the master and slaves.
void AddInputData(TObject *obj, Bool_t push=kFALSE)
Add data objects that might be needed during the processing of the selector (see Process()).
void AskParallel()
Ask the for the number of parallel slaves.
virtual void ClearCache(const char *file=0)
Remove file from all file caches.
virtual void ClearDataSetCache(const char *dataset=0)
Clear the content of the dataset cache, if any (matching 'dataset', if defined).
Int_t ActivateWorker(const char *ord, Bool_t save=kTRUE)
Make sure that the worker identified by the ordinal number 'ord' is in the active list.
Int_t CleanupSession(const char *sessiontag)
Send cleanup request for the session specified by tag.
virtual Bool_t CancelStagingDataSet(const char *dataset)
Cancels a dataset staging request.
TObject * GetParameter(const char *par) const
Get specified parameter.
void SetRunStatus(ERunStatus rst)
Long64_t fLastPollWorkers_s
Int_t Archive(Int_t query, const char *url)
Send archive request for the qry-th query in fQueries.
void AskForOutput(TSlave *sl)
Master asks for output from worker sl.
TList * GetListOfPackages()
Get from the master the list of names of the packages available.
TQueryResult * GetQueryResult(const char *ref=0)
Return pointer to the full TQueryResult instance owned by the player and referenced by 'ref'.
Int_t GetNumberOfSlaves() const
Return number of slaves as described in the config file.
void StartupMessage(const char *msg, Bool_t status, Int_t done, Int_t total)
Send startup message.
static void AssertMacroPath(const char *macro)
Make sure that the directory path contained by macro is in the macro path.
Int_t AddIncludePath(const char *incpath, Bool_t onClient=kFALSE, TList *wrks=0, Bool_t doCollect=kTRUE)
Add 'incpath' to the inc path search.
virtual TMap * GetDataSets(const char *uri="", const char *optStr="")
Lists all datasets that match given uri.
PrintProgress_t fPrintProgress
virtual void ShowCache(Bool_t all=kFALSE)
List contents of file cache.
void ClearFeedback()
Clear feedback list.
static TProof * Open(const char *url=0, const char *conffile=0, const char *confdir=0, Int_t loglevel=0)
Start a PROOF session on a specific cluster.
void Browse(TBrowser *b)
Build the PROOF's structure in the browser.
void InterruptCurrentMonitor()
If in active in a monitor set ready state.
void ResetMergePrg()
Reset the merge progress notificator.
void SetPerfTree(const char *pf="perftree.root", Bool_t withWrks=kFALSE)
Enable/Disable saving of the performance tree.
void ClearData(UInt_t what=kUnregistered, const char *dsname=0)
Remove files for the data directory.
void Touch()
Ping PROOF slaves. Returns the number of slaves that responded.
Int_t AssertPath(const char *path, Bool_t writable)
Make sure that 'path' exists; if 'writable' is kTRUE, make also sure that the path is writable.
virtual void ShowStagingStatusDataSet(const char *dataset, const char *optStr="filter:SsCc")
Like GetStagingStatusDataSet, but displays results immediately.
Int_t VerifyDataSetParallel(const char *uri, const char *optStr)
Internal function for parallel dataset verification used TProof::VerifyDataSet and TProofLite::Verify...
const char * GetConfFile() const
Int_t GetRemoteProtocol() const
Int_t ModifyWorkerLists(const char *ord, Bool_t add, Bool_t save)
Modify the worker active/inactive list by making the worker identified by the ordinal number 'ord' ac...
Int_t SetParallel(Int_t nodes=-1, Bool_t random=kFALSE)
Tell PROOF how many slaves to use in parallel.
Int_t GoMoreParallel(Int_t nWorkersToAdd)
Add nWorkersToAdd workers to current list of workers.
virtual void ShowDataSetCache(const char *dataset=0)
Display the content of the dataset cache, if any (matching 'dataset', if defined).
const char * GetImage() const
Int_t FindNextFreeMerger()
Return a merger, which is both active and still accepts some workers to be assigned to it.
Int_t GetRC(const char *RCenv, Int_t &env, const char *ord="0")
Get into 'env' the value of integer RC env variable 'rcenv' on node 'ord'.
static void AddEnvVar(const char *name, const char *value)
Add an variable to the list of environment variables passed to proofserv on the master and slaves.
static Bool_t GetFileInCmd(const char *cmd, TString &fn)
Static method to extract the filename (if any) form a CINT command.
virtual void ShowDataSets(const char *uri="", const char *optStr="")
Shows datasets in locations that match the uri.
Int_t Collect(const TSlave *sl, Long_t timeout=-1, Int_t endtype=-1, Bool_t deactonfail=kFALSE)
Collect responses from slave sl.
Float_t GetCpuTime() const
void ClearDataProgress(Int_t r, Int_t t)
Progress bar for clear data.
static Int_t SendInputData(TQueryResult *qr, TProof *p, TString &emsg)
Send the input data file to the workers.
void SetPlayer(TVirtualProofPlayer *player)
Set a new PROOF player.
Int_t ClearPackage(const char *package)
Remove a specific package.
Int_t SendInitialState()
Transfer the initial (i.e.
Int_t AddWorkers(TList *wrks)
Works on the master node only.
void GetStatistics(Bool_t verbose=kFALSE)
Get statistics about CPU time, real time and bytes read.
virtual Bool_t RegisterDataSet(const char *name, TFileCollection *dataset, const char *optStr="")
Register the 'dataSet' on the cluster under the current user, group and the given 'dataSetName'.
Int_t Broadcast(const TMessage &mess, TList *slaves)
Broadcast a message to all slaves in the specified list.
void DeleteParameters(const char *wildcard)
Delete the input list parameters specified by a wildcard (e.g.
void PrepareInputDataFile(TString &dataFile)
Prepare the file with the input data objects to be sent the master; the objects are taken from the de...
void InitMembers()
Default initializations.
void RedirectWorker(TSocket *s, TSlave *sl, Int_t output_size)
Redirect output of worker sl to some merger.
void HandleSubmerger(TMessage *mess, TSlave *sl)
Process a message of type kPROOF_SUBMERGER.
void SetInputDataFile(const char *datafile)
Set the file to be used to optimally distribute the input data objects.
Int_t ClearPackages()
Remove all packages.
void SetParameter(const char *par, const char *value)
Set input list parameter.
virtual Bool_t StartSlaves(Bool_t attach=kFALSE)
Start up PROOF slaves.
Int_t Ping()
Ping PROOF. Returns 1 if master server responded.
void SetActive(Bool_t=kTRUE)
TSlave * CreateSubmaster(const char *url, const char *ord, const char *image, const char *msd, Int_t nwk=1)
Create a new TSlave of type TSlave::kMaster.
void SaveActiveList()
Save current list of active workers.
const char * GetDataPoolUrl() const
virtual Int_t SetDataSetTreeName(const char *dataset, const char *treename)
Set/Change the name of the default tree.
void ShowMissingFiles(TQueryResult *qr=0)
Show information about missing files during query described by 'qr' or the last query if qr is null (...
Int_t RemoveIncludePath(const char *incpath, Bool_t onClient=kFALSE)
Remove 'incpath' from the inc path search.
void SetMonitor(TMonitor *mon=0, Bool_t on=kTRUE)
Activate (on == TRUE) or deactivate (on == FALSE) all sockets monitored by 'mon'.
Int_t GetParallel() const
Returns number of slaves active in parallel mode.
Int_t UnloadPackage(const char *package)
Unload specified package.
void RemoveFeedback(const char *name)
Remove object from feedback list.
Int_t Remove(Int_t query, Bool_t all=kFALSE)
Send remove request for the qry-th query in fQueries.
std::recursive_mutex fCloseMutex
Bool_t SendingLogToWindow() const
static TPluginHandler * fgLogViewer
Long64_t GetBytesRead() const
void UpdateDialog()
Final update of the progress dialog.
void AskStatistics()
Ask the for the statistics of the slaves.
virtual void SetAlias(const char *alias="")
Set an alias for this session.
Bool_t fFinalizationRunning
void Detach(Option_t *opt="")
Detach this instance to its proofserv.
void PrintProgress(Long64_t total, Long64_t processed, Float_t procTime=-1., Long64_t bytesread=-1)
Print a progress bar on stderr. Used in batch mode.
TPluginHandler * fProgressDialog
Int_t Init(const char *masterurl, const char *conffile, const char *confdir, Int_t loglevel, const char *alias=0)
Start the PROOF environment.
const char * GetConfDir() const
virtual 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 DeactivateWorker(const char *ord, Bool_t save=kTRUE)
Remove the worker identified by the ordinal number 'ord' from the the active list.
void SetRealTimeLog(Bool_t on=kTRUE)
Switch ON/OFF the real-time logging facility.
void cd(Int_t id=-1)
Set session with 'id' the default one.
TFileCollection * GetMissingFiles(TQueryResult *qr=0)
Get a TFileCollection with the files missing in the query described by 'qr' or the last query if qr i...
void ParseConfigField(const char *config)
The config file field may contain special instructions which need to be parsed at the beginning,...
Int_t GetNumberOfBadSlaves() const
Return number of bad slaves.
Int_t Retrieve(Int_t query, const char *path=0)
Send retrieve request for the qry-th query in fQueries.
Int_t BroadcastFile(const char *file, Int_t opt, const char *rfile, TList *wrks)
Broadcast file to all workers in the specified list.
void ShowParameters(const char *wildcard="PROOF_*") const
Show the input list parameters specified by the wildcard.
TMonitor * fActiveMonitor
void SendDataSetStatus(const char *msg, UInt_t n, UInt_t tot, Bool_t st)
Send or notify data set status.
virtual Int_t RemoveDataSet(const char *dataset, const char *optStr="")
Remove the specified dataset from the PROOF cluster.
void LogMessage(const char *msg, Bool_t all)
Log a message into the appropriate window by emitting a signal.
static void Reset(const char *url, Bool_t hard=kFALSE)
Wrapper around TProofMgr::Reset(...).
virtual Int_t PollForNewWorkers()
Asks the PROOF Serv for new workers in Dynamic Startup mode and activates them.
Int_t fLastAssignedMerger
TList * GetQueryResults()
Return pointer to the list of query results in the player.
void ShowFeedback() const
Show items in feedback list.
Int_t GoParallel(Int_t nodes, Bool_t accept=kFALSE, Bool_t random=kFALSE)
Go in parallel mode with at most "nodes" slaves.
void SetQueryMode(EQueryMode mode)
Change query running mode to the one specified by 'mode'.
Int_t UnloadPackages()
Unload all packages.
virtual TVirtualProofPlayer * MakePlayer(const char *player=0, TSocket *s=0)
Construct a TProofPlayer object.
TList * GetListOfActiveSlaves() const
TSignalHandler * fIntHandler
TList * FindDataSets(const char *searchString, const char *optStr="")
Find datasets, returns in a TList all found datasets.
Int_t SavePerfTree(const char *pf=0, const char *qref=0)
Save performance information from TPerfStats to file 'pf'.
virtual Int_t Load(const char *macro, Bool_t notOnClient=kFALSE, Bool_t uniqueOnly=kTRUE, TList *wrks=0)
Load the specified macro on master, workers and, if notOnClient is kFALSE, on the client.
Int_t AddDynamicPath(const char *libpath, Bool_t onClient=kFALSE, TList *wrks=0, Bool_t doCollect=kTRUE)
Add 'libpath' to the lib path search.
TProof()
Protected constructor to be used by classes deriving from TProof (they have to call Init themselves a...
Int_t RemoveWorkers(TList *wrks)
Used for shuting down the workres after a query is finished.
void Progress(Long64_t total, Long64_t processed)
Get query progress information.
Long64_t Finalize(Int_t query=-1, Bool_t force=kFALSE)
Finalize the qry-th query in fQueries.
Int_t RemoveDynamicPath(const char *libpath, Bool_t onClient=kFALSE)
Remove 'libpath' from the lib path search.
void ShowDataSetQuota(Option_t *opt=0)
shows the quota and usage of all groups if opt contains "U" shows also distribution of usage on user-...
void DeleteDrawFeedback(TDrawFeedback *f)
Delete draw feedback object.
virtual TFileCollection * GetStagingStatusDataSet(const char *dataset)
Obtains a TFileCollection showing the staging status of the specified dataset.
Bool_t CheckFile(const char *file, TSlave *sl, Long_t modtime, Int_t cpopt=(kCp|kCpBin))
Check if a file needs to be send to the slave.
Bool_t Prompt(const char *p)
Prompt the question 'p' requiring an answer y,Y,n,N Return kTRUE is the answer was y or Y,...
void SetProgressDialog(Bool_t on=kTRUE)
Enable/Disable the graphic progress dialog.
void GoAsynchronous()
Send GOASYNC message to the master.
TList * GetOutputList()
Get list with all object created during processing (see Process()).
TList * fAvailablePackages
void SetManager(TProofMgr *mgr)
Set manager and schedule its destruction after this for clean operations.
TString Getenv(const char *env, const char *ord="0")
Get value of environment variable 'env' on node 'ord'.
void StopProcess(Bool_t abort, Int_t timeout=-1)
Send STOPPROCESS message to master and workers.
TList * GetEnabledPackages() const
Int_t GetNumberOfActiveSlaves() const
Return number of active slaves, i.e.
TSlave * CreateSlave(const char *url, const char *ord, Int_t perf, const char *image, const char *workdir)
Create a new TSlave of type TSlave::kSlave.
void GetMaxQueries()
Get max number of queries whose full results are kept in the remote sandbox.
Int_t SendFile(const char *file, Int_t opt=(kBinary|kForward|kCp|kCpBin), const char *rfile=0, TSlave *sl=0)
Send a file to master or slave servers.
static Int_t AssertDataSet(TDSet *dset, TList *input, TDataSetManager *mgr, TString &emsg)
Make sure that dataset is in the form to be processed.
friend class TProofInputHandler
void Interrupt(EUrgent type, ESlaves list=kActive)
Send interrupt to master or slave servers.
Float_t GetRealTime() const
Int_t UploadDataSet(const char *, TList *, const char *=0, Int_t=0, TList *=0)
*** This function is deprecated and will disappear in future versions *** *** It is just a wrapper ar...
void MarkBad(TSlave *wrk, const char *reason=0)
Add a bad slave server to the bad slave list and remove it from the active list and from the two moni...
Int_t SendGroupView()
Send to all active slaves servers the current slave group size and their unique id.
Int_t RestoreActiveList()
Restore saved list of active workers.
virtual Int_t Echo(const TObject *obj)
Sends an object to master and workers and expect them to send back a message with the output of its T...
void ShowLog(Int_t qry=-1)
Display on screen the content of the temporary log file.
void ClearInputData(TObject *obj=0)
Remove obj form the input data list; if obj is null (default), clear the input data info.
Int_t SendCommand(const char *cmd, ESlaves list=kActive)
Send command to be executed on the PROOF master and/or slaves.
void Feedback(TList *objs)
Get list of feedback objects.
virtual Bool_t RequestStagingDataSet(const char *dataset)
Allows users to request staging of a particular dataset.
Int_t GetLogLevel() const
TObject * GetOutput(const char *name)
Get specified object that has been produced during the processing (see Process()).
TList * GetListOfSlaveInfos()
Returns list of TSlaveInfo's. In case of error return 0.
virtual TTree * GetTreeHeader(TDSet *tdset)
Creates a tree header (a tree with nonexisting files) object for the DataSet.
virtual void ValidateDSet(TDSet *dset)
Validate a TDSet.
TProofMgr::EServType fServType
Int_t UploadDataSetFromFile(const char *, const char *, const char *=0, Int_t=0, TList *=0)
*** This function is deprecated and will disappear in future versions *** *** It is just a wrapper ar...
static TList * fgProofEnvList
virtual void FindUniqueSlaves()
Add to the fUniqueSlave list the active slaves that have a unique (user) file system image.
const char * GetUser() const
void TerminateWorker(TSlave *wrk)
Ask an active worker 'wrk' to terminate, i.e. to shutdown.
static void SystemCmd(const char *cmd, Int_t fdout)
Exec system command 'cmd'. If fdout > -1, append the output to fdout.
EQueryMode GetQueryMode(Option_t *mode=0) const
Find out the query mode based on the current setting and 'mode'.
TString fActiveSlavesSaved
Int_t LoadPackage(const char *package, Bool_t notOnClient=kFALSE, TList *loadopts=0, TList *workers=0)
Load specified package.
Bool_t fSendGroupView
list returned by kPROOF_GETSLAVEINFO
void ResetProgressDialog(const char *sel, Int_t sz, Long64_t fst, Long64_t ent)
Reset progress dialog.
void SetDrawFeedbackOption(TDrawFeedback *f, Option_t *opt)
Set draw feedback option.
friend class TProofInterruptHandler
virtual TFileCollection * GetDataSet(const char *dataset, const char *optStr="")
Get a list of TFileInfo objects describing the files of the specified dataset.
TDrawFeedback * CreateDrawFeedback()
Draw feedback creation proxy.
void AddChain(TChain *chain)
Add chain to data set.
static const TList * GetEnvVars()
Get environemnt variables.
TSlave * FindSlave(TSocket *s) const
Find slave that has TSocket s. Returns 0 in case slave is not found.
TList * GetListOfEnabledPackages()
Get from the master the list of names of the packages enabled.
TList * GetFeedbackList() const
Return feedback list.
virtual void SendInputDataFile()
Send the input data objects to the master; the objects are taken from the dedicated list and / or the...
virtual TList * GetListOfQueries(Option_t *opt="")
Ask the master for the list of queries.
static void DelEnvVar(const char *name)
Remove an variable from the list of environment variables passed to proofserv on the master and slave...
Int_t BroadcastObject(const TObject *obj, Int_t kind, TList *slaves)
Broadcast an object to all slaves in the specified list.
void SetLogLevel(Int_t level, UInt_t mask=TProofDebug::kAll)
Set server logging level.
TList * fEnabledPackagesOnCluster
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...
void ClearInput()
Clear input object list.
TList * GetListOfBadSlaves() const
Int_t GetSandbox(TString &sb, Bool_t assert=kFALSE, const char *rc=0)
Set the sandbox path from ' Proof.Sandbox' or the alternative var 'rc'.
Int_t DisablePackage(const char *package)
Remove a specific package.
Int_t GetQueryReference(Int_t qry, TString &ref)
Get reference for the qry-th query in fQueries (as displayed by ShowQueries).
Int_t GetNumberOfUniqueSlaves() const
Return number of unique slaves, i.e.
virtual Bool_t ExistsDataSet(const char *dataset)
Returns kTRUE if 'dataset' exists, kFALSE otherwise.
void ShowDataSet(const char *dataset="", const char *opt="filter:SsCc")
display meta-info for given dataset usi
Int_t HandleInputMessage(TSlave *wrk, TMessage *m, Bool_t deactonfail=kFALSE)
Analyze the received message.
void SetDSet(TDSet *dset)
void AddInput(TObject *obj)
Add objects that might be needed during the processing of the selector (see Process()).
void RecvLogFile(TSocket *s, Int_t size)
Receive the log file of the slave with socket s.
void CloseProgressDialog()
Close progress dialog.
TProofOutputList fOutputList
Int_t GetActiveMergersCount()
Get the active mergers count.
void DataSetStatus(const char *msg, Bool_t status, Int_t done, Int_t total)
Send dataset preparation status.
TMacro * GetLastLog()
Fill a TMacro with the log lines since the last reading (fLogFileR) Return (TMacro *)0 if no line was...
TList * GetInputList()
Get input list.
void ReleaseMonitor(TMonitor *mon)
Release the used monitor to be used, making sure to delete newly created monitors.
void ShowEnabledPackages(Bool_t all=kFALSE)
List which packages are enabled.
void SetMaxDrawQueries(Int_t max)
Set max number of draw queries whose results are saved.
void GetLog(Int_t start=-1, Int_t end=-1)
Ask for remote logs in the range [start, end].
Int_t CollectInputFrom(TSocket *s, Int_t endtype=-1, Bool_t deactonfail=kFALSE)
Collect and analyze available input from socket s.
const char * GetMaster() const
void QueryResultReady(const char *ref)
Notify availability of a query result.
virtual void SaveWorkerInfo()
Save information about the worker set in the file .workers in the working dir.
Int_t EnablePackage(const char *package, Bool_t notOnClient=kFALSE, TList *workers=0)
Enable specified package.
Bool_t IsDataReady(Long64_t &totalbytes, Long64_t &bytesready)
See if the data is ready to be analyzed.
const char * GetGroup() const
virtual Int_t VerifyDataSet(const char *dataset, const char *optStr="")
Verify if all files in the specified dataset are available.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
void EmitVA(const char *signal_name, Int_t, const T &... params)
Emit a signal with a varying number of arguments.
A container class for query results.
virtual void SetOutputList(TList *out, Bool_t adopt=kTRUE)
Set / change the output list.
Long64_t GetEntries() const
void SetTermTime(Float_t termtime)
void SetArchived(const char *archfile)
Set (or update) query in archived state.
void SetPrepTime(Float_t preptime)
virtual void SetInputList(TList *in, Bool_t adopt=kTRUE)
Set / change the input list.
TObject * GetInputObject(const char *classname) const
Return first instance of class 'classname' in the input list.
void AddInput(TObject *obj)
Add obj to the input list.
TMacro * GetLogFile() const
Bool_t IsFinalized() const
static const char * GetMacroPath()
Get macro search path. Static utility function.
static void SetMacroPath(const char *newpath)
Set or extend the macro search path.
virtual Double_t Rndm()
Machine independent random number generator.
virtual UInt_t Integer(UInt_t imax)
Returns a random integer uniformly distributed on the interval [ 0, imax-1 ].
Regular expression class.
virtual const char * AsString(TString &out)
Returns short string with relevant information about this security context.
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Sequenceable collection abstract base class.
virtual void Add()
Add signal handler to system signal handler list.
virtual void Remove()
Remove signal handler from system signal handler list.
Int_t Compare(const TObject *obj) const
Used to sort slaveinfos by ordinal.
SysInfo_t GetSysInfo() const
void SetStatus(ESlaveStatus stat)
const char * GetOrdinal() const
void SetSysInfo(SysInfo_t si)
Setter for fSysInfo.
void SetOrdinal(const char *ord)
const char * GetName() const
Returns name of object.
Bool_t IsEqual(const TObject *obj) const
Used to compare slaveinfos by ordinal.
const char * GetDataDir() const
void Print(Option_t *option="") const
Print slave info.
Class describing a PROOF worker server.
virtual void SetAlias(const char *alias)
Set an alias for this session.
const char * GetWorkDir() const
Int_t GetSlaveType() const
Int_t GetParallel() const
const char * GetImage() const
void SetArchCompiler(const char *ac)
TSocket * GetSocket() const
virtual void SetStatus(Int_t st)
virtual void StopProcess(Bool_t abort, Int_t timeout)
Sent stop/abort request to PROOF server.
virtual void FlushSocket()
const char * GetUser() const
TFileHandler * GetInputHandler() const
const char * GetMsd() const
static TSlave * Create(const char *url, const char *ord, Int_t perf, const char *image, TProof *proof, Int_t stype, const char *workdir, const char *msd, Int_t nwk=1)
Static method returning the appropriate TSlave object for the remote server.
void SetInputHandler(TFileHandler *ih)
Adopt and register input handler for this slave.
virtual void Interrupt(Int_t type)
Send interrupt OOB byte to master or slave servers.
virtual void SetInterruptHandler(Bool_t)
virtual Int_t SetupServ(Int_t stype, const char *conffile)
Init a PROOF slave object.
virtual Int_t Ping()
Ping the remote master or slave servers.
virtual Int_t SendGroupPriority(const char *, Int_t)
const char * GetName() const
Returns name of object.
virtual Bool_t IsValid() const
void SetSessionTag(const char *st)
const char * GetOrdinal() const
const char * GetProofWorkDir() const
void SetROOTVersion(const char *rv)
virtual void Close(Option_t *opt="")
Close slave socket.
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
Int_t GetRemoteProtocol() const
TInetAddress GetInetAddress() const
TSecContext * GetSecContext() const
virtual Int_t SendRaw(const void *buffer, Int_t length, ESendRecvOptions opt=kDefault)
Send a raw buffer of specified length.
virtual Bool_t IsValid() const
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
A sorted doubly linked list.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void Stop()
Stop the stopwatch.
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
TString & Insert(Ssiz_t pos, const char *s)
Int_t Atoi() const
Return integer value of string.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
Double_t Atof() const
Return floating-point value contained in string.
Bool_t IsFloat() const
Returns kTRUE if string contains a floating point or integer number.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
Ssiz_t First(char c) const
Find first occurrence of a character c.
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)
Ssiz_t Last(char c) const
Find last occurrence of a character c.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(const char *cs)
TString & Remove(Ssiz_t pos)
TString & Append(const char *cs)
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 * GetBuildCompilerVersion() const
Return the build compiler version.
static void ResetErrno()
Static function resetting system error number.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
static Int_t GetErrno()
Static function returning system error number.
virtual void AddIncludePath(const char *includePath)
Add includePath to the already set include path.
virtual int Chmod(const char *file, UInt_t mode)
Set the file permission bits. Returns -1 in case or error, 0 otherwise.
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
virtual int GetPid()
Get process id.
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
Copy a file.
virtual const char * Getenv(const char *env)
Get environment variable.
virtual const char * GetIncludePath()
Get the list of include path.
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form:
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
virtual void SetIncludePath(const char *includePath)
IncludePath should contain the list of compiler flags to indicate where to find user defined header f...
virtual FILE * OpenPipe(const char *command, const char *mode)
Open a pipe.
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 FILE * TempFileName(TString &base, const char *dir=0)
Create a secure temporary file by appending a unique 6 letter string to base.
virtual int ClosePipe(FILE *pipe)
Close the pipe.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual void AddSignalHandler(TSignalHandler *sh)
Add a signal handler to list of system signal handlers.
virtual const char * GetDynamicPath()
Return the dynamic path (used to find shared libraries).
virtual TString GetFromPipe(const char *command)
Execute command and return output in TString.
virtual const char * HostName()
Return the system's host name.
virtual void Unsetenv(const char *name)
Unset environment variable.
virtual Bool_t IsAbsoluteFileName(const char *dir)
Return true if dir is an absolute pathname.
virtual void SetDynamicPath(const char *pathname)
Set the dynamic path to a new value.
virtual const char * WorkingDirectory()
Return working directory.
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host.
virtual TSignalHandler * RemoveSignalHandler(TSignalHandler *sh)
Remove a signal handler from list of signal handlers.
virtual void Setenv(const char *name, const char *value)
Set environment variable.
virtual const char * GetBuildArch() const
Return the build architecture.
virtual int Unlink(const char *name)
Unlink, i.e.
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=0)
Redirect standard output (stdout, stderr) to the specified file.
virtual const char * TempDirectory() const
Return a user configured or systemwide directory to create temporary files in.
A TTree represents a columnar dataset.
virtual Long64_t GetMaxEntryLoop() const
This class represents a RFC 3986 compatible URI.
Bool_t SetFragment(const TString &fragment)
Set fragment component of URI:
const TString GetUri() const
Returns the whole URI - an implementation of chapter 5.3 component recomposition.
This class represents a WWW compatible URL.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
const char * GetFile() const
void SetUser(const char *user)
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
const char * GetUser() const
const char * GetHost() const
void SetOptions(const char *opt)
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
const char * GetOptions() const
void SetHost(const char *host)
const char * GetProtocol() const
void SetPasswd(const char *pw)
The packetizer is a load balancing object created for each query.
virtual Int_t AddProcessed(TSlave *, TProofProgressStatus *, Double_t, TList **)
virtual void MarkBad(TSlave *, TProofProgressStatus *, TList **)
Abstract interface for the PROOF player.
virtual TDSetElement * GetNextPacket(TSlave *slave, TMessage *r)=0
virtual void AddEventsProcessed(Long64_t ev)=0
virtual void AddInput(TObject *inp)=0
virtual TQueryResult * GetCurrentQuery() const =0
virtual void AddOutput(TList *out)=0
virtual TList * GetInputList() const =0
virtual TObject * GetOutput(const char *name) const =0
virtual void SetDrawFeedbackOption(TDrawFeedback *f, Option_t *opt)=0
virtual void SetMaxDrawQueries(Int_t max)=0
virtual Long64_t GetEventsProcessed() const =0
virtual Long64_t DrawSelect(TDSet *set, const char *varexp, const char *selection, Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)=0
virtual TQueryResult * GetQueryResult(const char *ref)=0
virtual void SetMerging(Bool_t on=kTRUE)=0
virtual EExitStatus GetExitStatus() const =0
virtual void Progress(Long64_t total, Long64_t processed)=0
virtual void AddQueryResult(TQueryResult *q)=0
static TVirtualProofPlayer * Create(const char *player, TProof *p, TSocket *s=0)
Create a PROOF player.
virtual void UpdateAutoBin(const char *name, Double_t &xmin, Double_t &xmax, Double_t &ymin, Double_t &ymax, Double_t &zmin, Double_t &zmax)=0
virtual Int_t AddOutputObject(TObject *obj)=0
virtual Bool_t JoinProcess(TList *workers)=0
virtual TList * GetListOfResults() const =0
virtual void ClearInput()=0
virtual void HandleRecvHisto(TMessage *mess)=0
virtual void RemoveQueryResult(const char *ref)=0
virtual void StopProcess(Bool_t abort, Int_t timeout=-1)=0
virtual Long64_t Finalize(Bool_t force=kFALSE, Bool_t sync=kFALSE)=0
virtual Long64_t Process(TDSet *set, const char *selector, Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)=0
virtual void StoreFeedback(TObject *slave, TList *out)=0
virtual TDrawFeedback * CreateDrawFeedback(TProof *p)=0
virtual TVirtualPacketizer * GetPacketizer() const
virtual void DeleteDrawFeedback(TDrawFeedback *f)=0
virtual TList * GetOutputList() const =0
virtual void SetInitTime()=0
virtual void SetCurrentQuery(TQueryResult *q)=0
static constexpr double nm
static constexpr double s
static constexpr double pi
static constexpr double pc
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Double_t Sqrt(Double_t x)