50# include <sys/types.h>
57#include "RConfigure.h"
133 a =
Getline(
"\nSwitch to asynchronous mode not supported remotely:"
134 "\nEnter S/s to stop, Q/q to quit, any other key to continue: ");
136 a =
Getline(
"\nEnter A/a to switch asynchronous, S/s to stop, Q/q to quit,"
137 " any other key to continue: ");
139 if (
a[0] ==
'Q' ||
a[0] ==
'S' ||
a[0] ==
'q' ||
a[0] ==
's') {
141 Info(
"Notify",
"Processing interrupt signal ... %c",
a[0]);
162 fSocket(s), fProof(
p)
203 if (
myord)
return -1;
233 if (
oo.Contains(
"N")) {
235 oo.ReplaceAll(
"N",
"");
301 Error(
"SetMergedWorker",
"all workers have been already merged before!");
314 Error(
"AddWorker",
"all workers have been already assigned to this merger");
369 Error(
"PoDCheckUrl",
"PoD server is not running");
449 }
else if (
fMaster ==
"prooflite") {
463 if (
Exec(
"gProofServ->GetUser()",
"0",
kTRUE) == 0) {
466 Ssiz_t fst = os->GetString().First(
'\"');
470 emsg =
"could not find 'const char *' string in macro log";
473 emsg =
"could not retrieve user info";
475 if (!
emsg.IsNull()) {
482 Warning(
"TProof",
"%s: using local default %s",
emsg.Data(),
usr.Data());
492 gROOT->GetListOfSockets()->Remove(
mgr);
493 gROOT->GetListOfSockets()->Add(
mgr);
498 if (!
gROOT->GetListOfProofs()->FindObject(
this))
499 gROOT->GetListOfProofs()->Add(
this);
518 if (!
gROOT->GetListOfProofs()->FindObject(
this))
519 gROOT->GetListOfProofs()->Add(
this);
626 while (
envs.Tokenize(env, from,
",")) {
629 Warning(
"Init",
"request for sending over undefined environemnt variable '%s' - ignoring", env.
Data());
639 Warning(
"Init",
"none of the requested env variables were found: '%s'",
envs.Data());
641 Info(
"Init",
"the following environment variables have been added to the list to be sent to the nodes: '%s'",
envsfound.Data());
730 gROOT->GetListOfProofs()->Remove(
this);
746 Emit(
"CloseWindow()");
773 if (
opts.Contains(
"GUI")) {
840 Error(
"Init",
"could not create temporary logfile");
842 Error(
"Init",
"could not open temp logfile for reading");
907 Info(
"TProof",
"automatic schema evolution in TMessage explicitly disabled");
917 Error(
"Init",
"failure asserting sandbox directory %s",
sandbox.Data());
926 Error(
"Init",
"failure asserting directory %s",
packdir.Data());
931 Info(
"Init",
"package directory set to %s",
packdir.Data());
940 Info(
"Init",
" %d global package directories registered",
nglb);
1002 gROOT->GetListOfSockets()->Add(
this);
1027 }
else if (
sb ==
"..") {
1052 const char *
cq = (
IsLite()) ?
"\"" :
"";
1053 while (
sconf.Tokenize(opt, from,
",")) {
1054 if (opt.
IsNull())
continue;
1065 if ((
n = (
TNamed *)
envs->FindObject(
"PROOF_WRAPPERCMD")))
1066 all =
n->GetTitle();
1067 if ((
n = (
TNamed *)
envs->FindObject(
"PROOF_MASTER_WRAPPERCMD")))
1068 mst =
n->GetTitle();
1069 if ((
n = (
TNamed *)
envs->FindObject(
"PROOF_TOPMASTER_WRAPPERCMD")))
1070 top =
n->GetTitle();
1071 if ((
n = (
TNamed *)
envs->FindObject(
"PROOF_SUBMASTER_WRAPPERCMD")))
1072 sub =
n->GetTitle();
1073 if ((
n = (
TNamed *)
envs->FindObject(
"PROOF_SLAVE_WRAPPERCMD")))
1074 wrk =
n->GetTitle();
1077 if (
all !=
"" && top ==
"") top =
all;
1078 if (
all !=
"" && sub ==
"") sub =
all;
1080 if (
all !=
"" &&
all.BeginsWith(
"valgrind_opts:")) {
1082 Info(
"ParseConfigField",
"valgrind run: resetting 'PROOF_WRAPPERCMD':"
1083 " must be set again for next run , if any");
1087 cmd.Form(
"%svalgrind -v --suppressions=<rootsys>/etc/valgrind-root.supp",
cq);
1095 if (
mst ==
"" ||
mst.BeginsWith(
"valgrind_opts:")) {
1096 mst.ReplaceAll(
"valgrind_opts:",
"");
1097 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s",
cmd.Data(),
mst.Data());
1100 }
else if (
mst !=
"") {
1106 "master valgrinding does not make sense for PROOF-Lite: ignoring");
1108 if (!opt.
Contains(
"workers"))
return;
1110 if (opt ==
"valgrind" || opt ==
"valgrind=") opt =
"valgrind=workers";
1115 if (top ==
"" || top.
BeginsWith(
"valgrind_opts:")) {
1117 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s",
cmd.Data(), top.
Data());
1120 }
else if (top !=
"") {
1126 if (sub ==
"" || sub.
BeginsWith(
"valgrind_opts:")) {
1128 var.
Form(
"%s --log-file=<logfilemst>.valgrind.log %s",
cmd.Data(), sub.
Data());
1131 }
else if (sub !=
"") {
1137 if (
wrk ==
"" ||
wrk.BeginsWith(
"valgrind_opts:")) {
1138 wrk.ReplaceAll(
"valgrind_opts:",
"");
1139 var.
Form(
"%s --log-file=<logfilewrk>.__valgrind__.log %s%s",
cmd.Data(),
wrk.Data(),
cq);
1157 }
else if (
wrk !=
"") {
1171 Printf(
" ---> Starting a debug run with valgrind (master:%s, workers:%s)",
mstlab.Data(),
wrklab.Data());
1173 Printf(
" ---> Starting a debug run with valgrind (workers:%s)",
wrklab.Data());
1175 Printf(
" ---> Please be patient: startup may be VERY slow ...");
1176 Printf(
" ---> Logs will be available as special tags in the log window (from the progress dialog or TProof::LogViewer()) ");
1177 Printf(
" ---> (Reminder: this debug run makes sense only if you are running a debug version of ROOT)");
1186 Printf(
"*** Requested IgProf performance profiling ***");
1225 if ((
c !=
'+') && ((
c <
'0') || (
c >
'9')))
1247 Printf(
"*** Requested CPU pinning ***");
1249 const char *
pinCmd =
"taskset -c <cpupin>";
1252 if (
ev && (
p =
dynamic_cast<TNamed *
>(
ev->FindObject(
"PROOF_SLAVE_WRAPPERCMD")))) {
1253 val =
p->GetTitle();
1272 Error(
"AssertPath",
"undefined input path");
1281 Error(
"AssertPath",
"could not create path %s", path.
Data());
1288 Error(
"AssertPath",
"could not make path %s writable", path.
Data());
1307 gROOT->GetListOfSockets()->Remove(
mgr);
1308 gROOT->GetListOfSockets()->Add(
mgr);
1323 Error(
"AddWorkers",
"AddWorkers can only be called on the master!");
1328 Error(
"AddWorkers",
"empty list of workers!");
1351 Error(
"AddWorkers",
"cannot create new list for the workers to be added");
1359 while ((to = next())) {
1407 if (
slave->IsValid()) {
1412 Warning(
"AddWorkers",
"worker '%s' is invalid",
slave->GetOrdinal());
1416 Info(
"AddWorkers",
"worker on host %s created"
1417 " and added to list (ord: %s)", worker->
GetName(),
slave->GetOrdinal());
1447 if (
sl->IsValid()) {
1450 Info(
"AddWorkers",
"worker on host %s finalized"
1451 " and added to list",
sl->GetOrdinal());
1480 Info(
"AddWorkers",
"will invoke GoMoreParallel()");
1483 Info(
"AddWorkers",
"GoMoreParallel()=%d",
nw);
1489 Info(
"AddWorkers",
"will invoke GoParallel()");
1498 Info(
"AddWorkers",
"will invoke SaveWorkerInfo()");
1504 Info(
"AddWorkers",
"will invoke SendParallel()");
1512 Info(
"AddWorkers",
"will send the PROCESS message to selected workers");
1542 Info(
"SetupWorkersEnv",
"will invoke UploadPackage() and EnablePackage() on added workers");
1547 Info(
"SetupWorkersEnv",
"will invoke UploadPackage() and EnablePackage() on all workers");
1565 Info(
"SetupWorkersEnv",
"will invoke Load() on selected workers");
1566 Printf(
"Loading a macro : %s", os->GetName());
1574 dyn.ReplaceAll(
":",
" ");
1575 dyn.ReplaceAll(
"\"",
" ");
1577 Info(
"SetupWorkersEnv",
"will invoke AddDynamicPath() on selected workers");
1582 inc.ReplaceAll(
"-I",
" ");
1583 inc.ReplaceAll(
"\"",
" ");
1585 Info(
"SetupWorkersEnv",
"will invoke AddIncludePath() on selected workers");
1600 Error(
"RemoveWorkers",
"RemoveWorkers can only be called on the master!");
1617 Error(
"RemoveWorkers",
"The list of workers should not be empty!");
1625 while ((to = next())) {
1639 Warning(
"RemoveWorkers",
"unknown object type: %s - it should be"
1640 " TProofNodeInfo or inheriting from TSlave", to->
ClassName());
1645 Info(
"RemoveWorkers",
"terminating worker %s",
sl->GetOrdinal());
1670 TString emsg(
"no resource currently available for this session: please retry later");
1682 Printf(
"Starting master: opening connection ...");
1685 if (
slave->IsValid()) {
1689 " connection open: setting up server ... \r");
1700 if (
slave->IsValid()) {
1703 Printf(
"Starting master: OK ");
1709 Error(
"StartSlaves",
1710 "client and remote protocols not compatible (%d and %d)",
1733 Error(
"StartSlaves",
"no resources available or problems setting up workers (check logs)");
1735 Error(
"StartSlaves",
"could not setup output redirection on master");
1737 Error(
"StartSlaves",
"setting up master");
1743 if (!
slave->IsValid()) {
1748 Error(
"StartSlaves",
1749 "failed to setup connection with PROOF master server");
1755 gROOT->GetPluginManager()->FindHandler(
"TProofProgressDialog")))
1761 Printf(
"Starting master: failure");
1766 Printf(
"Starting master: OK ");
1771 gROOT->GetPluginManager()->FindHandler(
"TProofProgressDialog")))
1784 Error(
"StartSlaves",
"failed to create (or connect to) the PROOF master server");
1800 { std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
1823 gROOT->GetListOfSockets()->Remove(
this);
1835 gROOT->GetListOfProofs()->Remove(
this);
1859 if (
sl->IsValid()) {
1881 if (
sl->IsValid()) {
1897 if (
sl->IsValid() &&
sl->GetSocket() == s)
1936 if (
sl->fImage ==
sl2->fImage) {
1948 Error(
"FindUniqueSlaves",
"TSlave is neither Master nor Slave");
2053 if (s.
Contains(
"Total MB's processed:")) {
2056 }
else if (s.
Contains(
"Total real time used (s):")) {
2057 s.
ReplaceAll(
"Total real time used (s):",
"");
2059 }
else if (s.
Contains(
"Total CPU time used (s):")) {
2060 s.
ReplaceAll(
"Total CPU time used (s):",
"");
2069 Printf(
" Real/CPU time (s): %.3f / %.3f; workers: %d; processed: %.2f MBs",
2173 Printf(
"+++ Options: \"A\" show all queries known to server");
2174 Printf(
"+++ \"L\" show retrieved queries");
2175 Printf(
"+++ \"F\" full listing of query info");
2176 Printf(
"+++ \"H\" print this menu");
2178 Printf(
"+++ (case insensitive)");
2180 Printf(
"+++ Use Retrieve(<#>) to retrieve the full"
2181 " query results from the master");
2182 Printf(
"+++ e.g. Retrieve(8)");
2212 Printf(
"+++ Queries processed during this session: selector: %d, draw: %d",
2214 while ((pq =
nxq()))
2221 Printf(
"+++ Queries processed during this session: selector: %d, draw: %d",
2230 while ((pq =
nxlq()))
2267 Info(
"IsDataReady",
"%lld / %lld (%s)",
2286 if (
slaves->GetSize() == 0)
return;
2292 if (
sl->IsValid()) {
2312 if (
sl->GetParallel() >= 0)
2341 slave->GetPerfIdx());
2362 if (
slave->IsValid()) {
2364 MarkBad(
slave,
"could not send kPROOF_GETSLAVEINFO message");
2370 if (
slave->IsValid()) {
2372 MarkBad(
slave,
"could not send kPROOF_GETSLAVEINFO message");
2377 Error(
"GetSlaveInfo",
"TSlave is neither Master nor Slave");
2392 mon->DeActivateAll();
2400 mon->Activate(
sl->GetSocket());
2428 if (
workers->GetSize() == 0)
return 0;
2435 if (
wrk->IsValid()) {
2437 MarkBad(
wrk,
"could not send group priority");
2486 if (
sl->IsValid()) {
2487 if (
sl->GetSocket()->Send(
mess) == -1)
2488 MarkBad(
sl,
"could not broadcast request");
2521 if (str)
mess.WriteString(str);
2534 if (str)
mess.WriteString(str);
2546 mess.WriteObject(obj);
2558 mess.WriteObject(obj);
2571 if (
slaves->GetSize() == 0)
return 0;
2578 if (
sl->IsValid()) {
2579 if (
sl->GetSocket()->SendRaw(buffer,
length) == -1)
2580 MarkBad(
sl,
"could not send broadcast-raw request");
2614 if (
wrks->GetSize() == 0)
return 0;
2621 if (
wrk->IsValid()) {
2623 Error(
"BroadcastFile",
2624 "problems sending file to worker %s (%s)",
2625 wrk->GetOrdinal(),
wrk->GetName());
2674 if (!
sl->IsValid())
return 0;
2680 mon->DeActivateAll();
2682 mon->Activate(
sl->GetSocket());
2706 mon->DeActivateAll();
2712 mon->Activate(
sl->GetSocket());
2761 Info(
"Collect",
">>>>>> Entering collect responses #%04d",
collectId);
2769 if (!
mon->GetActive(
actto))
return 0;
2791 int cnt = 0,
rc = 0;
2807 mon->ResetInterrupt();
2814 if (
al &&
al->GetSize() > 0) {
2815 Info(
"Collect",
" %d node(s) still active:",
al->GetSize());
2821 Info(
"Collect",
" %s (%s)",
wrk->GetName(),
wrk->GetOrdinal());
2823 Info(
"Collect",
" %p: %s:%d",
xs,
xs->GetInetAddress().GetHostName(),
2824 xs->GetInetAddress().GetPort());
2848 if (s && s != (
TSocket *)(-1)) {
2856 Info(
"Collect",
"#%04d: deactivating %p (active: %d, %p)",
collectId,
2857 s,
mon->GetActive(),
2860 }
else if (
rc == 2) {
2867 Info(
"Collect",
"save monitor: deactivating %p (active: %d, %p)",
2883 mon->DeActivateAll();
2902 Info(
"Collect",
"worker %s was asked to send its output to master",
2927 if (
al &&
al->GetSize() > 0) {
2929 Info(
"Collect",
" %d node(s) went in timeout:",
al->GetSize());
2935 Info(
"Collect",
" %s",
wrk->GetName());
2937 Info(
"Collect",
" %p: %s:%d",
xs,
xs->GetInetAddress().GetHostName(),
2938 xs->GetInetAddress().GetPort());
2942 mon->DeActivateAll();
2961 Info(
"Collect",
"<<<<<< Exiting collect responses #%04d",
collectId);
2978 Error(
"PollForNewWorkers",
"Can't invoke: not on a master -- should not happen!");
2982 Error(
"PollForNewWorkers",
"No ProofServ available -- should not happen!");
3010 if (found)
delete ni;
3014 Info(
"PollForNewWorkers",
"New worker found: %s:%s",
3015 ni->GetNodeName().Data(),
fullOrd.Data());
3026 Info(
"PollForNewWorkers",
"Requesting to add %d new worker(s)",
newWorkers->GetEntries());
3029 Error(
"PollForNewWorkers",
"Call to AddWorkers() failed (got %d < 0)",
rv);
3036 Info(
"PollForNewWorkers",
"No new worker found");
3067 Info(
"CollectInputFrom",
"%p: got %d from Recv()", s,
recvrc);
3078 MarkBad(s,
"problems receiving a message in TProof::CollectInputFrom(...)");
3084 MarkBad(s,
"undefined message in TProof::CollectInputFrom(...)");
3112 Warning(
"HandleInputMessage",
"given an empty message or undefined worker");
3118 Warning(
"HandleInputMessage",
"worker socket is undefined");
3126 Info(
"HandleInputMessage",
"got type %d from '%s'",
what,
sl->GetOrdinal());
3142 if ((
mess->BufferSize() >
mess->Length()))
3145 MarkBad(s,
"received kPROOF_FATAL");
3158 Info(
"HandleInputMessage",
"received kPROOF_STOP from %s: disabling any further collection this worker",
3179 mess->ReadString(str,
sizeof(str));
3190 Info(
"HandleInputMessage",
"%s: kPROOF_GETPACKET",
sl->GetOrdinal());
3232 Info(
"HandleInputMessage",
"%s: kPROOF_LOGFILE: size: %d",
sl->GetOrdinal(),
size);
3238 (*mess) >>
sl->fStatus >>
sl->fParallel;
3240 Info(
"HandleInputMessage",
"%s: kPROOF_LOGDONE: status %d parallel %d",
3241 sl->GetOrdinal(),
sl->fStatus,
sl->fParallel);
3242 if (
sl->fStatus != 0) {
3258 (*mess) >>
sl->fBytesRead >>
sl->fRealTime >>
sl->fCpuTime
3259 >>
sl->fWorkDir >>
sl->fProofWorkDir;
3261 Info(
"HandleInputMessage",
"kPROOF_GETSTATS: %s",
sl->fWorkDir.Data());
3263 if ((
mess->BufferSize() >
mess->Length()))
3267 if (
sl->fImage.IsNull())
3269 sl->fProofWorkDir.Data());
3274 Info(
"HandleInputMessage",
3275 "kPROOF_GETSTATS:%s image: %s",
sl->GetOrdinal(),
sl->GetImage());
3287 (*mess) >>
sl->fParallel;
3288 if ((
mess->BufferSize() >
mess->Length()))
3296 if ((
mess->BufferSize() >
mess->Length())) {
3315 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_PACKAGE_LIST: enter");
3325 Error(
"HandleInputMessage",
3326 "kPROOF_PACKAGE_LIST: kListEnabledPackages: TList not found in message!");
3335 Error(
"HandleInputMessage",
3336 "kPROOF_PACKAGE_LIST: kListPackages: TList not found in message!");
3340 Error(
"HandleInputMessage",
"kPROOF_PACKAGE_LIST: unknown type: %d",
type);
3353 Info(
"HandleInputMessage",
"kPROOF_SENDOUTPUT: enter (%s)",
sl->GetOrdinal());
3369 Info(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: enter");
3373 Info(
"HandleInputMessage",
"finalization on %s started ...", prefix);
3377 while ((
mess->BufferSize() >
mess->Length())) {
3399 Warning(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: query result missing");
3401 }
else if (
type > 0) {
3444 Warning(
"HandleInputMessage",
"kPROOF_OUTPUTOBJECT: player undefined!");
3455 Info(
"HandleInputMessage",
"%s: kPROOF_OUTPUTLIST: enter",
sl->GetOrdinal());
3472 out = (
TList *) out->Clone();
3477 Info(
"HandleInputMessage",
3478 "%s: kPROOF_OUTPUTLIST: query result missing",
sl->GetOrdinal());
3487 Info(
"HandleInputMessage",
3488 "%s: kPROOF_OUTPUTLIST: outputlist is empty",
sl->GetOrdinal());
3492 "%s: kPROOF_OUTPUTLIST: player undefined!",
sl->GetOrdinal());
3502 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_QUERYLIST: enter");
3515 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_RETRIEVE: enter");
3524 Info(
"HandleInputMessage",
3525 "kPROOF_RETRIEVE: query result missing or player undefined");
3532 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_MAXQUERIES: enter");
3536 Printf(
"Number of queries fully kept remotely: %d", max);
3542 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SERVERSTARTED: enter");
3555 char msg[512] = {0};
3582 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_DATASET_STATUS: enter");
3594 char msg[512] = {0};
3621 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_STARTPROCESS: enter");
3641 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"Preparation time: %f s",
fPrepTime);
3648 if (!
gROOT->IsBatch()) {
3667 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_ENDINIT: enter");
3679 Info(
"HandleInputMessage",
"kPROOF_SETIDLE from '%s': enter (%d)",
sl->GetOrdinal(),
fNotIdle);
3686 Info(
"HandleInputMessage",
"%s: got kPROOF_SETIDLE",
sl->GetOrdinal());
3689 "%s: got kPROOF_SETIDLE but no running workers ! protocol error?",
3695 if ((
mess->BufferSize() >
mess->Length()))
3703 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_QUERYSUBMITTED: enter");
3708 if ((
mess->BufferSize() >
mess->Length()))
3728 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SESSIONTAG: enter");
3737 if ((
mess->BufferSize() >
mess->Length()))
3740 if ((
mess->BufferSize() >
mess->Length())) {
3751 Info(
"HandleInputMessage",
"kPROOF_FEEDBACK: enter");
3764 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_AUTOBIN: enter");
3783 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_PROGRESS: enter");
3817 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_STOPPROCESS: enter");
3824 (*mess) >> status >> abort;
3826 (*mess) >> events >> abort;
3854 Emit(
"StopProcess(Bool_t)", abort);
3860 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_SUBMERGER: enter");
3867 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_GETSLAVEINFO: enter");
3874 Error(
"HandleInputMessage",
"kPROOF_GETSLAVEINFO: no list received!");
3905 if (
sl->GetMsd() && (
strlen(
sl->GetMsd()) > 0))
3918 Info(
"HandleInputMessage",
"kPROOF_VALIDATE_DSET: enter");
3922 Error(
"HandleInputMessage",
"kPROOF_VALIDATE_DSET: fDSet not set");
3931 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_DATA_READY: enter");
3947 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_MESSAGE: enter");
3953 if ((
mess->BufferSize() >
mess->Length()))
3984 PDB(kGlobal,2)
Info(
"HandleInputMessage",
"kPROOF_VERSARCHCOMP: %s",
vac.Data());
3987 if (
vac.Tokenize(
vers, from,
"|"))
3990 vers.ReplaceAll(
":",
"|");
3991 sl->SetROOTVersion(
vers);
3997 Error(
"HandleInputMessage",
"unknown command received from '%s' (what = %d)",
4029 Info(
"HandleSubmerger",
"kOutputSent: Worker %s:%d:%s had sent its output to merger #%d",
4033 Error(
"HandleSubmerger",
"kOutputSize: #%d not in list ",
merger_id);
4037 mi->SetMergedWorker();
4038 if (
mi->AreAllWorkersMerged()) {
4046 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"all mergers removed ... ");
4050 PDB(kSubmerger, 2)
Error(
"HandleSubmerger",
"kOutputSent: received not on endmaster!");
4060 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"kMergerDown: #%d ",
merger_id);
4063 Error(
"HandleSubmerger",
"kMergerDown: #%d not in list ",
merger_id);
4068 if (!
mi->IsActive()) {
4086 while ((o =
nxo())) {
4089 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
"kMergerDown:%d: exit",
merger_id);
4097 Info(
"HandleSubmerger",
"worker %s reported as finished ",
sl->GetOrdinal());
4101 Info(
"HandleSubmerger",
"finalization on %s started ...", prefix);
4109 PDB(kSubmerger, 2)
Info(
"HandleSubmerger",
4110 "kOutputSize: Worker %s:%d:%s reports %d output objects (+ available port %d)",
4126 msg.Form(
"%s: Invalid request: cannot start %d mergers for %d workers",
4142 msg.Form(
"%s: Number of mergers set dynamically to %d (for %d workers)",
4145 msg.Form(
"%s: No mergers will be used for %d workers",
4161 if (!
hosts.FindObject(
wrk->GetName())) {
4168 msg.Form(
"%s: Number of mergers set to %d (for %d workers), one for each slave host",
4171 msg.Form(
"%s: No mergers will be used for %d workers",
4180 msg.Form(
"%s: Number of mergers set by user to %d (for %d workers)",
4228 if (!
strcmp(
sl->GetName(),
mgi->GetMerger()->GetName())) {
4248 Error(
"HandleSubMerger",
"kOutputSize received not on endmaster!");
4265 if (!
strcmp(
sl->GetName(),
mgi->GetMerger()->GetName())) {
4281 Info(
"RedirectWorker",
"redirecting worker %s to merger %d",
sl->GetOrdinal(),
merger_id);
4283 PDB(kSubmerger, 2)
Info(
"RedirectWorker",
"redirecting output to merger #%d",
merger_id);
4339 PDB(kSubmerger, 2)
Info(
"AskForOutput",
4340 "worker %s was asked to send its output to master",
4360 Info(
"UpdateDialog",
4361 "processing was aborted - %lld events processed",
4376 Info(
"UpdateDialog",
4377 "processing was stopped - %lld events processed",
4394 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
4399 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
4416 if (
sl->GetInputHandler())
4417 sl->GetInputHandler()->Add();
4429 if (
sl->GetInputHandler())
4430 sl->GetInputHandler()->Remove();
4457 Info(
"CreateMerger",
"worker %s will be merger ",
sl->GetOrdinal());
4459 PDB(kSubmerger, 2)
Info(
"CreateMerger",
"Begin");
4463 Info(
"CreateMerger",
"cannot create merger on port %d - exit", port);
4488 msg.Form(
"worker %s on host %s will be merger for %d additional workers",
sl->GetOrdinal(),
sl->GetName(),
workers);
4503 PDB(kSubmerger,2)
Info(
"CreateMerger",
4504 "merger #%d (port: %d) for %d workers started",
4512 PDB(kSubmerger, 2)
Info(
"CreateMerger",
"exit");
4523 std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
4529 Error(
"MarkBad",
"worker instance undefined: protocol error? ");
4550 msg.Form(
"\n +++ Message from %s : marking %s:%d (%s) as bad\n +++ Reason: %s",
4551 src.Data(),
wrk->GetName(),
wrk->GetPort(),
wrk->GetOrdinal(),
4553 Info(
"MarkBad",
"%s",
msg.Data());
4557 msg +=
TString::Format(
"\n\n +++ Most likely your code crashed on worker %s at %s:%d.\n",
4558 wrk->GetOrdinal(),
wrk->GetName(),
wrk->GetPort());
4562 msg +=
TString::Format(
" +++ Please check the session logs for error messages either using\n");
4567 "Display(\"%s\",0)\n\n",
thisurl.Data(),
wrk->GetOrdinal());
4571 "Display(\"*\")\n\n",
thisurl.Data());
4576 Info(
"MarkBad",
"worker %s at %s:%d asked to terminate",
4577 wrk->GetOrdinal(),
wrk->GetName(),
wrk->GetPort());
4603 if (
id !=
kNPOS)
ord.Remove(0,
id+1);
4636 Form(
"%s@%s:%d",
wrk->GetUser(),
wrk->GetName(),
wrk->GetPort()),
4637 0,
"",
wrk->GetWorkDir());
4684 std::lock_guard<std::recursive_mutex> lock(
fCloseMutex);
4699 Warning(
"TerminateWorker",
"worker instance undefined: protocol error? ");
4704 if (
wrk->GetSocket() &&
wrk->GetSocket()->IsValid()) {
4709 Info(
"TerminateWorker",
"connection to worker is already down: cannot"
4710 " send termination message");
4760 if (
slaves->GetSize() == 0)
return 0;
4767 if (
sl->IsValid()) {
4768 if (
sl->Ping() == -1) {
4786 if (
slaves->GetSize() == 0)
return;
4792 if (
sl->IsValid()) {
4809 IsValid() ?
"valid" :
"invalid");
4812 Printf(
"ROOT version|rev: %s|%s",
gROOT->GetVersion(),
gROOT->GetGitCommit());
4818 if (
sl->GetSocket()->GetSecContext())
4819 Printf(
"Security context: %s",
4820 sl->GetSocket()->GetSecContext()->AsString(
sc));
4821 Printf(
"Proofd protocol version: %d",
sl->GetSocket()->GetRemoteProtocol());
4823 Printf(
"Security context: Error - No connection");
4824 Printf(
"Proofd protocol version: Error - No connection");
4836 Printf(
"*** Master server %s (parallel mode, %d workers):",
4839 Printf(
"*** Master server %s (sequential mode):",
4850 ver.Form(
"%s|%s",
gROOT->GetVersion(),
gROOT->GetGitCommit());
4853 Printf(
"ROOT version|rev|tag: %s",
ver.Data());
4871 Printf(
"List of workers:");
4875 if (!
sl->IsValid())
continue;
4882 if (
sl->GetSocket()->Send(
mess) == -1)
4883 const_cast<TProof*
>(
this)->
MarkBad(
sl,
"could not send kPROOF_PRINT request");
4887 Error(
"Print",
"TSlave is neither Master nor Worker");
4944 if (
oo.BeginsWith(
"of=")) {
4947 }
else if (
oo.BeginsWith(
"outfile=")) {
4950 }
else if (
oo.BeginsWith(
"ds")) {
4953 }
else if (
oo.BeginsWith(
"dataset")) {
4956 }
else if (
oo.BeginsWith(
"stf")) {
4959 }
else if (
oo.BeginsWith(
"savetofile")) {
4960 tags =
"savetofile";
4966 Error(
"HandleOutputOptions",
"options 'of'/'outfile' and 'ds'/'dataset' are incompatible!");
4974 Error(
"HandleOutputOptions",
"could not extract output file settings string! (%s)", opt.
Data());
4984 if (
gDebug > 0)
Info(
"HandleOutputOptions",
"no dataset name found: use default");
4989 if (
dsname.Contains(
"|V")) {
4991 dsname.ReplaceAll(
"|V",
"");
4997 from = ios +
tags.Length();
4999 if (
gDebug > 0)
Info(
"HandleOutputOptions",
"save-to-file not found: use default");
5007 Error(
"HandleOutputOptions",
"save-to-file option must be a digit! (%s)",
stfopt.Data());
5029 if (!
outfile.BeginsWith(
"master:")) {
5031 Warning(
"HandleOutputOptions",
5032 "directory '%s' for the output file does not exists or is not writable:"
5047 if (
outfile.BeginsWith(
"master:")) {
5048 outfile.ReplaceAll(
"master:",
"");
5053 if (
Exec(
"gProofServ->GetDataDir()",
"0",
kTRUE) == 0) {
5056 Ssiz_t fst = os->GetString().First(
'\"');
5057 Ssiz_t lst = os->GetString().Last(
'\"');
5060 emsg =
"could not find 'const char *' string in macro log! cannot continue";
5063 emsg =
"could not retrieve master data directory info! cannot continue";
5065 if (!
emsg.IsNull()) {
5066 Error(
"HandleOutputOptions",
"%s",
emsg.Data());
5093 Warning(
"HandleOutputOptions",
"Dataset required bu Save-To-File disabled: enabling!");
5114 while ((o =
nxo())) {
5126 Warning(
"HandleOutputOptions",
"could not retrieve TFileCollection for dataset '%s'",
dsname.Data());
5129 Warning(
"HandleOutputOptions",
"dataset not found!");
5141 Printf(
" Output successfully copied to %s",
target.Data());
5144 Warning(
"HandleOutputOptions",
"problems copying output to %s",
target.Data());
5152 while ((o =
nxo())) {
5161 Printf(
" Output successfully copied to %s",
target.Data());
5164 Warning(
"HandleOutputOptions",
"problems copying output to %s",
target.Data());
5167 }
else if (
pof->IsRetrieve()) {
5172 Printf(
" Output successfully copied to %s",
pof->GetTitle());
5174 Warning(
"HandleOutputOptions",
5175 "problems copying %s to %s",
pof->GetOutputFileName(),
pof->GetTitle());
5186 Warning(
"HandleOutputOptions",
"problems opening output file %s",
target.Data());
5191 while ((o =
nxo())) {
5246 Warning(
"SetFeedback",
"could not extract feedback string! Ignoring ...");
5257 while (
optfb.Tokenize(nm, from,
",")) {
5259 if (nm ==
"stats") {
5261 startdraw.Form(
"gDirectory->Add(new TStatsFeedback((TProof *)%p))",
this);
5268 stopdraw.Form(
"TObject *o = gDirectory->FindObject(\"%s\"); "
5269 " if (o && strcmp(o->ClassName(), \"TStatsFeedback\")) "
5281 startdraw.Form(
"gDirectory->Add(new TDrawFeedback((TProof *)%p))",
this);
5286 stopdraw.Form(
"TObject *o = gDirectory->FindObject(\"%s\"); "
5287 " if (o && strcmp(o->ClassName(), \"TDrawFeedback\")) "
5313 if (opt.Contains(
"fb=") || opt.Contains(
"feedback="))
SetFeedback(opt,
optfb, 0);
5322 Info(
"Process",
"session is in waiting or processing status: switch to asynchronous mode");
5324 opt.ReplaceAll(
"SYNC",
"");
5358 if (selector &&
strlen(selector)) {
5363 Error(
"Process",
"neither a selecrot file nor a selector object have"
5364 " been specified: cannot process!");
5373 qr->SetTermTime(
rt);
5418 Info(
"Process",
"server version < 5.18/00:"
5419 " processing of TFileCollection not supported");
5430 if (selector &&
strlen(selector)) {
5435 Error(
"Process",
"neither a selecrot file nor a selector object have"
5436 " been specified: cannot process!");
5508 Info(
"Process",
"processing 'by name' not supported by the server");
5518 const char *separator = (
fname.EndsWith(
",")) ?
"," :
"|";
5524 if (
f && !(
f->IsZombie())) {
5530 if (
f->ReadBuffer(buf,
len)) {
5531 Error(
"Process",
"problems reading from file '%s'",
fname.Data());
5542 if (rest > 0)
return -1;
5544 Error(
"Process",
"could not open file '%s'",
fname.Data());
5554 dsname.ReplaceAll(
"\n", separator);
5556 Info(
"Process",
"processing multi-dataset read from file '%s':",
fname.Data());
5564 Info(
"Process",
"multi-dataset processing not supported by the server");
5571 while (names.Tokenize(
name, from,
"[, |]")) {
5604 Error(
"Process",
"bad name syntax (%s): please use"
5605 " a '#' after the dataset name",
name.Data());
5615 Warning(
"Process",
"'obj' or 'dir' specification not consistent w/ the first given: ignore");
5639 if (
f && !(
f->IsZombie()) &&
f->GetListOfKeys()) {
5642 while ((k = (
TKey *)
nxk())) {
5649 if (!(
inpl->FindObject(
el->GetName()))) {
5658 Warning(
"Process",
"multiple entry lists found in file '%s': the first one is taken;\n"
5659 "if this is not what you want, load first the content in memory"
5660 "and select it by name ",
enl.Data());
5665 Warning(
"Process",
"file '%s' cannot be open or is empty - ignoring",
enl.Data());
5692 dset->SetEntryList(elist);
5696 if (selector &&
strlen(selector)) {
5701 Error(
"Process",
"neither a selector file nor a selector object have"
5702 " been specified: cannot process!");
5726 Info(
"Process",
"server version < 5.17/04: generic processing not supported");
5735 if (selector &&
strlen(selector)) {
5740 Error(
"Process",
"neither a selector file nor a selector object have"
5741 " been specified: cannot process!");
5765 Error(
"Process",
"server version < 5.33/02:"
5766 "processing by object not supported");
5770 Error(
"Process",
"selector object undefined!");
5791 Error(
"Process",
"server version < 5.33/02:"
5792 "processing by object not supported");
5796 Error(
"Process",
"selector object undefined!");
5814 Error(
"Process",
"server version < 5.33/02:"
5815 "processing by object not supported");
5819 Error(
"Process",
"selector object undefined!");
5838 Error(
"Process",
"server version < 5.33/02:"
5839 "processing by object not supported");
5843 Error(
"Process",
"selector object undefined!");
5867 if (
qr->GetSeqNum() ==
qry) {
5868 ref.
Form(
"%s:%s",
qr->GetTitle(),
qr->GetName());
5891 Info(
"Finalize",
"query #%d not found",
qry);
5917 if (!
xref.IsNull()) {
5921 if (
qr->IsFinalized()) {
5925 Info(
"Finalize",
"query already finalized:"
5926 " use Finalize(<qry>,kTRUE) to force new retrieval");
5931 xref.Form(
"%s:%s",
qr->GetTitle(),
qr->GetName());
5955 Info(
"Retrieve",
"query #%d not found",
qry);
5957 Info(
"Retrieve",
"positive argument required - do nothing");
5985 Info(
"Retrieve",
"archive file cannot be open (%s)", path);
5991 qr->SetArchived(path);
6000 Info(
"Retrieve",
"query not found after retrieve");
6020 Info(
"Remove",
"query #%d not found",
qry);
6022 Info(
"Remove",
"positive argument required - do nothing");
6064 Info(
"Archive",
"query #%d not found",
qry);
6066 Info(
"Archive",
"positive argument required - do nothing");
6126 if (
m.Contains(
"ASYN")) {
6128 }
else if (
m.Contains(
"SYNC")) {
6154 Info(
"DrawSelect",
"not idle, asynchronous Draw not supported");
6187 Info(
"Process",
"processing 'by name' not supported by the server");
6208 Error(
"DrawSelect",
"bad name syntax (%s): please use"
6209 " a '#' after the dataset name",
dsetname);
6227 Info(
"StopProcess",
"enter %d", abort);
6261 Emit(
"DisableGoAsyn()");
6272 Info(
"GoAsynchronous",
"functionality not supported by the server - ignoring");
6280 Info(
"GoAsynchronous",
"either idle or already in asynchronous mode - ignoring");
6303 Warning(
"RecvLogFile",
"file descriptor for outputs undefined (%d):"
6304 " will not log msgs",
fdout);
6330 SysError(
"RecvLogFile",
"error writing to unit: %d",
fdout);
6336 }
else if (rec < 0) {
6337 Error(
"RecvLogFile",
"error during receiving log file");
6343 EmitVA(
"LogMessage(const char*,Bool_t)", 2, buf,
kFALSE);
6373 Warning(
"NotifyLogMsg",
"file descriptor for outputs undefined (%d):"
6374 " will not notify msgs",
fdout);
6383 char *
p = (
char *)
msg;
6388 SysError(
"NotifyLogMsg",
"error writing to unit: %d",
fdout);
6397 SysError(
"NotifyLogMsg",
"error writing to unit: %d",
fdout);
6417 Info(
"LogMessage",
"Enter ... %s, 'all: %s",
msg ?
msg :
"",
6418 all ?
"true" :
"false");
6420 if (
gROOT->IsBatch()) {
6421 PDB(kGlobal,1)
Info(
"LogMessage",
"GUI not started - use TProof::ShowLog()");
6443 Error(
"LogMessage",
"error reading log file");
6449 EmitVA(
"LogMessage(const char*,Bool_t)", 2, buf,
kFALSE);
6476 MarkBad(
sl,
"could not send kPROOF_GROUPVIEW message");
6540 if (!s.
Length())
return 0;
6549 Error(
"Exec",
"file %s could not be transfered",
fn);
6596 if (!s.
Length())
return 0;
6654 os->GetString().Tokenize(
info, from,
"\"");
6655 os->GetString().Tokenize(
info, from,
"\"");
6675 Ssiz_t fst = os->GetString().First(
'\"');
6676 Ssiz_t lst = os->GetString().Last(
'\"');
6678 if (
info.IsDigit()) {
6701 Ssiz_t fst = os->GetString().First(
'\"');
6702 Ssiz_t lst = os->GetString().Last(
'\"');
6704 if (
info.IsFloat()) {
6727 Ssiz_t fst = os->GetString().First(
'\"');
6728 Ssiz_t lst = os->GetString().Last(
'\"');
6729 env = os->GetString()(
fst+1,
lst-
fst-1);
6811 FileMap_t::const_iterator it;
6815 if (
md.fModtime != modtime) {
6818 if ((*
md5) !=
md.fMD5) {
6821 md.fModtime = modtime;
6841 Error(
"CheckFile",
"could not calculate local MD5 check sum - dont send");
6851 md.fModtime = modtime;
6855 Error(
"CheckFile",
"could not calculate local MD5 check sum - dont send");
6906 if (
slaves->GetSize() == 0)
return 0;
6914 SysError(
"SendFile",
"cannot open file %s", file);
6922 Error(
"SendFile",
"cannot stat file %s", file);
6927 Error(
"SendFile",
"empty file %s", file);
6949 if (
fnam ==
"cache") {
6951 }
else if (
fnam.IsNull()) {
6966 Info(
"SendFile",
"%s sending file %s to: %s:%s (%d)", snd,
6967 file,
sl->GetName(),
sl->GetOrdinal(),
sendto);
6976 MarkBad(
sl,
"could not send kPROOF_SENDFILE request");
6990 SysError(
"SendFile",
"error reading from file %s", file);
6996 if (
len > 0 &&
sl->GetSocket()->SendRaw(buf,
len) == -1) {
6997 SysError(
"SendFile",
"error writing to slave %s:%s (now offline)",
6998 sl->GetName(),
sl->GetOrdinal());
7030 if (!
IsValid() || !obj)
return -1;
7032 mess.WriteObject(obj);
7056 if (!
IsValid() || !obj)
return -1;
7060 mess.WriteObject(obj);
7103 Warning(
"SetRealTimeLog",
"session is invalid - do nothing");
7121 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"request all nodes");
7123 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"request %d node%s", nodes,
7124 nodes == 1 ?
"" :
"s");
7131 PDB(kGlobal,1)
Info(
"SetParallelSilent",
"got %d node%s",
n,
n == 1 ?
"" :
"s");
7150 Printf(
"PROOF set to sequential mode");
7154 subfix +=
", randomly selected";
7155 Printf(
"PROOF set to parallel mode (%d worker%s)",
n,
subfix.Data());
7173 Error(
"GoMoreParallel",
"can't invoke here -- should not happen!");
7177 Error(
"GoMoreParallel",
"no ProofServ available nor Lite -- should not happen!");
7186 ((
sl =
dynamic_cast<TSlave *
>( next() ) ))) {
7191 Error(
"GoMoreParallel",
"TSlave is neither a Master nor a Slave: %s:%s",
7192 sl->GetName(),
sl->GetOrdinal());
7198 (
strcmp(
"IGNORE",
sl->GetImage()) == 0)) {
7200 Info(
"GoMoreParallel",
"Worker %s:%s won't be considered",
7201 sl->GetName(),
sl->GetOrdinal());
7207 Info(
"GoMoreParallel",
"Worker %s:%s is already active: skipping",
7208 sl->GetName(),
sl->GetOrdinal());
7223 Info(
"GoMoreParallel",
"Worker %s:%s marked as active!",
7224 sl->GetName(),
sl->GetOrdinal());
7228 Error(
"GoMoreParallel",
"Dynamic addition of master is not supported");
7236 Info(
"GoMoreParallel",
"Will invoke AskStatistics() -- implies a Collect()");
7241 Info(
"GoMoreParallel",
"Will invoke FindUniqueSlaves()");
7246 Info(
"GoMoreParallel",
"Will invoke SendGroupView()");
7250 Info(
"GoMoreParallel",
"Will invoke GetParallel()");
7256 s.
Form(
"PROOF just went more parallel (%d additional worker%s, %d worker%s total)",
7260 Info(
"GoMoreParallel",
"%s", s.
Data());
7288 if (
strcmp(
"IGNORE",
sl->GetImage()) == 0)
continue;
7291 Error(
"GoParallel",
"TSlave is neither Master nor Slave");
7304 while (cnt <
nwrks) {
7314 Error(
"GoParallel",
"attaching to candidate!");
7331 Int_t nn = (nodes < 0) ? -1 : nodes-cnt;
7338 if (
sl->GetSocket()->Send(
mess) == -1) {
7339 MarkBad(
sl,
"could not send kPROOF_PARALLEL or kPROOF_LOGFILE request");
7343 if (
sl->IsValid()) {
7348 if (
sl->GetParallel() > 0) {
7355 MarkBad(
sl,
"collect failed after kPROOF_PARALLEL or kPROOF_LOGFILE request");
7382 printf(
"PROOF set to sequential mode\n");
7384 printf(
"PROOF set to parallel mode (%d worker%s)\n",
7385 n,
n == 1 ?
"" :
"s");
7388 PDB(kGlobal,1)
Info(
"GoParallel",
"got %d node%s",
n,
n == 1 ?
"" :
"s");
7424 if (
doask && !
Prompt(
"Do you really want to remove all data files"))
return;
7425 if (
fManager->
Rm(
"~/data/*",
"-rf",
"all") < 0)
7426 Warning(
"ClearData",
"problems purging data directory");
7431 Error(
"ClearData",
"dataset name mandatory when removing a full dataset");
7436 Error(
"ClearData",
"dataset '%s' does not exists",
dsname);
7442 Error(
"ClearData",
"could not retrieve info about dataset '%s'",
dsname);
7447 " of dataset '%s'",
dsname);
7459 if (!(
fi->GetFirstUrl())) {
7460 Error(
"ClearData",
"GetFirstUrl() returns NULL for '%s' - skipping",
7465 file =
uf.GetFile();
7466 host =
uf.GetHost();
7471 while (
nurl-- &&
fi->NextUrl()) {
7472 up =
fi->GetCurrentUrl();
7473 if (!
strcmp(
up->GetProtocol(),
"file")) {
7478 file =
up->GetFile();
7485 Error(
"ClearData",
"problems removing '%s'", file.
Data());
7503 Error(
"ClearData",
"cannot create temp file for logs");
7514 if (!in.is_open()) {
7515 Error(
"ClearData",
"could not open temp file for logs: %s",
outtmp.Data());
7526 if (
line.IsNull())
continue;
7530 if (!
line.Tokenize(host, from,
"| "))
continue;
7532 if (!
line.Tokenize(file, from,
"| "))
continue;
7543 Info(
"ClearData",
"added info for: h:%s, f:%s", host.
Data(), file.
Data());
7545 Warning(
"ClearData",
"found incomplete line: '%s'",
line.Data());
7557 Warning(
"ClearData",
"no dataset beloning to '%s'",
sel.Data());
7576 while (
nurl-- &&
fi->NextUrl()) {
7577 up =
fi->GetCurrentUrl();
7578 if (!
strcmp(
up->GetProtocol(),
"file")) {
7579 opt =
up->GetOptions();
7583 file =
up->GetFile();
7585 Info(
"ClearData",
"found: host: %s, file: %s", host.
Data(), file.
Data());
7596 "registered file '%s' not found in the full list!",
7612 Info(
"ClearData",
"%d unregistered files to be removed:",
nfiles);
7616 " unregistered data files",
nfiles);
7629 if (
fManager->
Rm(
fn->GetName(),
"-f", os->GetName()) != 0) {
7630 Error(
"ClearData",
"problems removing '%s' on host '%s'",
7631 fn->GetName(), os->GetName());
7653 if (!pp.
Contains(
"[y/N]")) pp +=
" [y/N]";
7655 if (
a !=
"\n" &&
a[0] !=
'y' &&
a[0] !=
'Y' &&
a[0] !=
'n' &&
a[0] !=
'N') {
7656 Printf(
"Please answer y, Y, n or N");
7659 }
else if (
a ==
"\n" ||
a[0] ==
'n' ||
a[0] ==
'N') {
7672 fprintf(
stderr,
"[TProof::ClearData] Total %5d files\t|", t);
7674 if (
r > 0 && t > 0) {
7677 else if (
l == 20*
r/t)
7679 else if (
l > 20*
r/t)
7751 "errno %d writing to file descriptor %d",
7780 Warning(
"ShowPackages",
"file descriptor for outputs undefined (%p):"
7781 " will not log msgs",
fout);
7862 Error(
"ClearPackage",
"need to specify a package name");
7868 if (
pac.EndsWith(
".par"))
7869 pac.Remove(
pac.Length()-4);
7890 Error(
"DisablePackage",
"need to specify a package name");
7896 if (
pac.EndsWith(
".par"))
7897 pac.Remove(
pac.Length()-4);
7901 Warning(
"DisablePackage",
"problem removing locally package '%s'",
pack);
7912 if (
fManager->
Rm(path,
"-rf",
"all") != -1) {
7948 Warning(
"DisablePackages",
"problem removing packages locally");
7957 if (
fManager->
Rm(
"~/packages/*",
"-rf",
"all") != -1) {
7996 Error(
"BuildPackage",
"need to specify a package name");
8002 if (
pac.EndsWith(
".par"))
8003 pac.Remove(
pac.Length()-4);
8075 Error(
"LoadPackage",
"need to specify a package name");
8081 if (
pac.EndsWith(
".par"))
8082 pac.Remove(
pac.Length()-4);
8099 Info(
"LoadPackage",
"Sending load message to selected workers only");
8119 Error(
"UnloadPackage",
"need to specify a package name");
8125 if (
pac.EndsWith(
".par"))
8126 pac.Remove(
pac.Length()-4);
8130 Warning(
"UnloadPackage",
"unable to remove symlink to %s",
package);
8205 os->String().ReplaceAll(
"checkversion=",
"chkv=");
8207 if ((
fcv = os->String().Index(
"chkv=")) !=
kNPOS) {
8209 if ((
lcv = os->String().Index(re,
fcv)) ==
kNPOS) {
8210 lcv = os->String().Length();
8214 if (
ocv.EndsWith(
"=off") ||
ocv.EndsWith(
"=0"))
8216 else if (
ocv.EndsWith(
"=on") ||
ocv.EndsWith(
"=1"))
8219 Warning(
"EnablePackage",
"'checkversion' option unknown from argument: '%s' - ignored",
ocv.Data());
8222 Info(
"EnablePackage",
"setting check version option from argument: %d",
cvopt);
8227 if (
fcv > 0 && os->String().Index(re,
fcv - 1) ==
fcv - 1) os->String().Remove(
fcv - 1, 1);
8228 os->String().ReplaceAll(
ocv.Data(),
"");
8231 if (!os->String().IsNull()) {
8238 Warning(
"EnablePackage",
"remote server does not support options: ignoring the option string");
8264 Error(
"EnablePackage",
"need to specify a package name");
8270 if (
pac.EndsWith(
".par"))
8271 pac.Remove(
pac.Length()-4);
8281 if (!
ocv.IsNull()) {
8282 if (
ocv ==
"off" ||
ocv ==
"0")
8284 else if (
ocv ==
"on" ||
ocv ==
"1")
8287 Warning(
"EnablePackage",
"'checkversion' option unknown from rootrc: '%s' - ignored",
ocv.Data());
8298 Info(
"EnablePackage",
"using check version option: %d",
chkveropt);
8305 Warning(
"EnablePackage",
"remote server does not support options: ignoring the option list");
8337 Error(
"DownloadPackage",
"the manager is undefined!");
8353 Error(
"DownloadPackage",
8354 "could not create the destination directory '%s' (errno: %d)",
8359 Error(
"DownloadPackage",
8360 "destination path '%s' exist but is not a directory!",
dstdir);
8373 Warning(
"DownloadPackage",
"problems restoring output");
8386 if (s.
Contains(
"*** Global Package cache")) {
8392 }
else if (s.
Contains(
"*** Package cache")) {
8409 Error(
"DownloadPackage",
"problems downloading '%s' (src:%s, dst:%s)",
8413 Info(
"DownloadPackage",
"'%s' cross-checked against master repository (local path: %s)",
8451 if (par.EndsWith(
".par")) {
8468 Info(
"UploadPackage",
"global package found (%s): no upload needed",
8471 }
else if (
xrc < 0) {
8472 Error(
"UploadPackage",
"PAR file '%s' not found", par.Data());
8504 smsg.Form(
"+%s", par.Data());
8512 smsg.Replace(0, 1,
"-");
8515 smsg.Replace(0, 1,
"=");
8537 sl->GetSocket()->Send(
mess);
8547 Error(
"UploadPackage",
"%s: problems uploading file %s",
8548 sl->GetOrdinal(), par.Data());
8554 if (!
ftp.IsZombie()) {
8566 Error(
"UploadPackage",
"%s: unpacking of package %s failed",
8567 sl->GetOrdinal(), base.
Data());
8586 Error(
"UploadPackage",
"package %s did not exist on submaster %s",
8587 base.
Data(),
ma->GetOrdinal());
8634 Error(
"Load",
"need to specify a macro name");
8657 Info(
"Load",
"macro '%s' does not contain a '.': do nothing",
macro);
8673 Info(
"Load",
"no associated header file found: tried: %s %s",
8686 Error(
"Load",
"additional file '%s' not found",
fn.Data());
8706 Error(
"Load",
"problems sending implementation file %s",
implname.Data());
8711 Error(
"Load",
"problems sending header file %s",
headname.Data());
8721 Error(
"Load",
"problems sending additional file %s", os->GetName());
8759 if (!
mp.BeginsWith(
np) && !
mp.Contains(
":"+
np)) {
8760 Int_t ip = (
mp.BeginsWith(
".:")) ? 2 : 0;
8773 PDB(kGlobal, 1)
Info(
"Load",
"adding loaded macro: %s",
macro);
8823 PDB(kGlobal, 1)
Info(
"Load",
"adding loaded macro: %s",
macro);
8848 Info(
"AddDynamicPath",
"list is empty - nothing to do");
8893 Info(
"AddIncludePath",
"list is empty - nothing to do");
8937 Info(
"RemoveDynamicPath",
"list is empty - nothing to do");
8971 Info(
"RemoveIncludePath",
"list is empty - nothing to do");
9004 if ((
type !=
"lib") && (
type !=
"inc")) {
9005 Error(
"HandleLibIncPath",
"unknown action type: %s - protocol error?",
type.Data());
9014 if (path.
Length() > 0 && path !=
"-") {
9016 Warning(
"HandleLibIncPath",
"decomposing path %s", path.
Data());
9023 if (
type ==
"lib") {
9045 Info(
"HandleLibIncPath",
9046 "libpath %s does not exist or cannot be read - not added",
xlib.Data());
9066 Info(
"HandleLibIncPath",
9067 "incpath %s does not exist or cannot be read - not added",
xinc.Data());
9074 if (
type ==
"lib") {
9154 for (
int l = 0;
l < 20;
l++) {
9182 fprintf(
stderr,
"| %.02f %% [%.1f evts/s, %.1f %s, time left: %.1f s]\r",
9185 fprintf(
stderr,
"| %.02f %% [%.1f evts/s, time left: %.1f s]\r",
9211 if (
gROOT->IsBatch()) {
9232 if (
gROOT->IsBatch()) {
9237 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
9254 if (
gROOT->IsBatch()) {
9259 EmitVA(
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
9260 10,
total,
processed,
bytesread,
initTime,
procTime,
evtrti,
mbrti,
actw,
tses,
eses);
9271 Info(
"Feedback",
"%d objects",
objs->GetSize());
9273 Info(
"Feedback",
"%d objects",
objs->GetSize());
9286 Info(
"CloseProgressDialog",
9293 Emit(
"CloseProgressDialog()");
9305 EmitVA(
"ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)",
9317 EmitVA(
"StartupMessage(const char*,Bool_t,Int_t,Int_t)",
9329 EmitVA(
"DataSetStatus(const char*,Bool_t,Int_t,Int_t)",
9343 char msg[512] = {0};
9372 Info(
"QueryResultReady",
"ref: %s", ref);
9374 Emit(
"QueryResultReady(const char*)",ref);
9382 if (
dset->ElementsValid())
return;
9414 for (
Int_t i = 0; i < 2; i++) {
9418 if (
elem->GetValid())
continue;
9450 Warning(
"ValidateDSet",
"invalid values from TPair! Protocol error?");
9458 Warning(
"ValidateDSet",
"no node to allocate TDSetElement to - ignoring");
9466 TIter nextNode(&nodes);
9468 while (
TPair *node =
dynamic_cast<TPair*
>(nextNode())) {
9478 dset->GetDirectory());
9486 elem->GetDirectory(),
elem->GetFirst(),
9491 if (
copyset.GetListOfElements()->GetSize()>0) {
9497 PDB(kGlobal,1)
Info(
"ValidateDSet",
9498 "Sending TDSet with %d elements to slave %s"
9500 copyset.GetListOfElements()->GetSize(),
9502 sl->GetSocket()->Send(
mesg);
9510 Info(
"ValidateDSet",
"Calling Collect");
9621 Info(
"SendInputDataFile",
"broadcasting %s",
dataFile.Data());
9654 if (
f &&
f->GetListOfKeys() &&
f->GetListOfKeys()->GetSize() > 0)
9684 while ((obj = next())) {
9714 while ((obj = next())) {
9720 Error(
"PrepareInputDataFile",
"could not open %s for updating",
dataFile.Data());
9780 !out || (out && out->GetSize() <= 0))
return o;
9781 if ((o = out->FindObject(
name)))
return o;
9787 while ((o =
nxo())) {
9790 if (!(
f = (
TFile *)
gROOT->GetListOfFiles()->FindObject(
pf->GetOutputFileName()))) {
9793 if (!
f || (
f &&
f->IsZombie())) {
9794 ::Warning(
"TProof::GetOutput",
"problems opening file %s",
fn.Data());
9797 if (
f && (o =
f->Get(
name)))
return o;
9825 Warning(
"SetParameter",
"player undefined! Ignoring");
9844 Warning(
"SetParameter",
"player undefined! Ignoring");
9863 Warning(
"SetParameter",
"player undefined! Ignoring");
9882 Warning(
"SetParameter",
"player undefined! Ignoring");
9901 Warning(
"SetParameter",
"player undefined! Ignoring");
9921 Warning(
"GetParameter",
"player undefined! Ignoring");
9926 return il->FindObject(par);
9945 while ((
p = next())) {
9969 while ((
p = next())) {
9992 Info(
"AddFeedback",
"Adding object \"%s\" to feedback",
name);
10023 Info(
"",
"no feedback requested");
10047 Error(
"GetTreeHeader",
"No connection");
10067 Error(
"GetTreeHeader",
"Error getting a replay from the master.Result %d", (
int)
d);
10074 if (
s1 ==
"Success")
10079 Info(
"GetTreeHeader",
"%s, message size: %d, entries: %d",
10082 Info(
"GetTreeHeader",
"tree header retrieval failed");
10246 msg << start << end;
10265 "problem lseeking log file to current position (errno: %d)",
TSystem::GetErrno());
10285 "problem lseeking log file to start position (errno: %d)",
TSystem::GetErrno());
10311 "problem lseeking log file to original position (errno: %d)",
TSystem::GetErrno());
10392 }
else if (
qry != -1) {
10403 }
else if (
qry > 0) {
10424 Info(
"ShowLog",
"query %d not found in list",
qry);
10452 SysError(
"ShowLog",
"error writing to stdout");
10464 const char *opt =
Getline(
"More (y/n)? [y]");
10484 SysError(
"ShowLog",
"error writing to stdout");
10501 if (
d->GetProof()) {
10526 if (!
sl || !(
sl->IsValid()) || !(s =
sl->GetSocket())) {
10527 Error(
"Detach",
"corrupted worker instance: wrk:%p, sock:%p",
sl, s);
10564 if (
d->GetProof() ==
this) {
10637 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10668 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10686 Printf(
" *** WARNING: this function is obsolete: it has been replaced by TProofMgr::UploadFiles ***");
10712 Info(
"RegisterDataSet",
10713 "functionality not available: the server does not have dataset support");
10718 Info(
"RegisterDataSet",
"specifying a dataset name is mandatory");
10727 sopt.ReplaceAll(
"V",
"");
10730 sopt.ReplaceAll(
"S",
"");
10736 mess.WriteObject(dataSet);
10742 Error(
"RegisterDataSet",
"dataset was not saved");
10770 Info(
"SetDataSetTreeName",
"functionality not supported by the server");
10774 if (!dataset ||
strlen(dataset) <= 0) {
10775 Info(
"SetDataSetTreeName",
"specifying a dataset name is mandatory");
10780 Info(
"SetDataSetTreeName",
"specifying a tree name is mandatory");
10796 Error(
"SetDataSetTreeName",
"some error occured: default tree name not changed");
10812 Info(
"GetDataSets",
10813 "functionality not available: the server does not have dataset support");
10817 Warning(
"GetDataSets",
"'lite' option not supported by the server");
10828 Error(
"GetDataSets",
"error receiving datasets information");
10834 Error(
"GetDataSets",
"error receiving datasets");
10836 Error(
"GetDataSets",
"message not found or wrong type (%p)",
retMess);
10849 Info(
"ShowDataSets",
10850 "functionality not available: the server does not have dataset support");
10862 Error(
"ShowDataSets",
"error receiving datasets information");
10871 Info(
"ExistsDataSet",
"functionality not available: the server has an"
10872 " incompatible version of TFileInfo");
10876 if (!dataset ||
strlen(dataset) <= 0) {
10877 Error(
"ExistsDataSet",
"dataset name missing");
10899 Info(
"ClearDataSetCache",
"functionality not available on server");
10917 Info(
"ShowDataSetCache",
"functionality not available on server");
10940 Info(
"GetDataSet",
"functionality not available: the server has an"
10941 " incompatible version of TFileInfo");
10945 if (!uri ||
strlen(uri) <= 0) {
10946 Info(
"GetDataSet",
"specifying a dataset name is mandatory");
10955 Error(
"GetDataSet",
"sending request failed");
10960 Error(
"GetDataSet",
"error receiving datasets information");
10966 Error(
"GetDataSet",
"error reading list of files");
10968 Error(
"GetDataSet",
"message not found or wrong type (%p)",
retMess);
10984 Warning(
"ShowDataSet",
"no such dataset: %s", uri);
10998 Error(
"RemoveDataSet",
"sending request failed");
11012 Error (
"FindDataSets",
"not yet implemented");
11013 return (
TList *) 0;
11023 Error(
"RequestStagingDataSet",
11024 "functionality not supported by the server");
11035 Error(
"RequestStagingDataSet",
"staging request was unsuccessful");
11049 Error(
"CancelStagingDataSet",
11050 "functionality not supported by the server");
11061 Error(
"CancelStagingDataSet",
"cancel staging request was unsuccessful");
11076 Error(
"GetStagingStatusDataSet",
11077 "functionality not supported by the server");
11085 Error(
"GetStagingStatusDataSet",
"sending request failed");
11093 Error(
"GetStagingStatusDataSet",
"problem processing the request");
11101 Error(
"GetStagingStatusDataSet",
"error reading list of files");
11104 Error(
"GetStagingStatusDataSet",
11105 "response message not found or wrong type (%p)",
retMess);
11133 Info(
"VerifyDataSet",
"functionality not available: the server has an"
11134 " incompatible version of TFileInfo");
11139 if (!uri || (uri &&
strlen(uri) <= 0)) {
11140 Error(
"VerifyDataSet",
"dataset name is is mandatory");
11148 sopt.ReplaceAll(
"S",
"");
11149 Info(
"VerifyDataSet",
"Master-only verification");
11159 Info(
"VerifyDataSet",
"no such dataset %s", uri);
11168 Error(
"VerifyDataSet",
"PROOF is in sequential mode (no workers): cannot do parallel verification.");
11169 Error(
"VerifyDataSet",
"Either start PROOF with some workers or force sequential adding 'S' as option.");
11203 const char*
mss=
"";
11238 while ((obj =
nxtout())) {
11266 Info(
"VerifyDataSetParallel",
"%s: changed? %d (# files opened = %d, # files touched = %d,"
11267 " # missing files = %d)",
11279 Info(
"UploadDataSet",
"Lite-session: functionality not implemented");
11291 Info(
"GetDataSetQuota",
"could not receive quota");
11297 Error(
"GetDataSetQuota",
"error getting quotas");
11299 Error(
"GetDataSetQuota",
"message not found or wrong type (%p)",
retMess);
11312 Info(
"ShowDataSetQuota",
11313 "functionality not available: the server does not have dataset support");
11318 Info(
"UploadDataSet",
"Lite-session: functionality not implemented");
11329 Error(
"ShowDataSetQuota",
"error receiving quota information");
11393 Info(
"ModifyWorkerLists",
11394 "an ordinal number - e.g. \"0.4\" or \"*\" for all - is required as input");
11398 Info(
"ModifyWorkerLists",
"ord: '%s' (add: %d, save: %d)",
ord, add, save);
11435 while(
oo.Tokenize(o, from,
","))
11449 if (!out->FindObject(
wrk)) {
11469 if (os)
ords->Remove(os);
11470 if (
ords->GetSize() == 0)
break;
11480 while ((os =
nxo())) {
11483 if (!
strcmp(os->GetName(),
wrk->GetOrdinal()))
break;
11485 if (!
oo.IsNull())
oo +=
",";
11486 oo += os->GetName();
11489 if (!
oo.IsNull()) {
11490 Warning(
"ModifyWorkerLists",
"worker(s) '%s' not found!",
oo.Data());
11517 Warning(
"ModifyWorkerLists",
"request not completely full filled");
11519 Error(
"ModifyWorkerLists",
"request failed");
11524 if (
oo.Contains(
","))
11525 Warning(
"ModifyWorkerLists",
"block request not supported by server: splitting into pieces ...");
11527 while(
oo.Tokenize(o, from,
",")) {
11586 const char *
pn =
"TProof::Open";
11594 ::Error(
pn,
"plugin manager not found");
11598 if (
gROOT->IsBatch()) {
11599 ::Error(
pn,
"we are in batch mode, cannot show PROOF Session Viewer");
11605 ::Error(
pn,
"no plugin found for TSessionViewer");
11608 if (
sv->LoadPlugin() == -1) {
11609 ::Error(
pn,
"plugin for TSessionViewer could not be loaded");
11622 if (
clst.BeginsWith(
"workers="))
clst.Insert(0,
"lite:///?");
11623 if (
clst.BeginsWith(
"tunnel="))
clst.Insert(0,
"/?");
11633 if (!
opts.IsNull()) {
11645 if (!
sport.IsDigit()) {
11653 if (
sport.IsDigit())
11654 port =
sport.Atoi();
11657 ::Info(
"TProof::Open",
"using tunnel at %s:%d", host.
Data(), port);
11663 "problems parsing tunnelling info from options: %s",
opts.Data());
11671 if (
opts.Length() > 0) {
11675 u.SetOptions(
opts);
11676 }
else if (
opts.IsDigit()) {
11685 if (
mgr &&
mgr->IsValid()) {
11699 if (!proof || !proof->
IsValid()) {
11701 ::Error(
pn,
"new session could not be attached");
11710 if (!proof || !proof->
IsValid()) {
11711 ::Error(
pn,
"new session could not be created");
11740 if (
mgr &&
mgr->IsValid())
11743 ::Error(
"TProof::Reset",
11744 "unable to initialize a valid manager instance");
11816 Error(
"SaveWorkerInfo",
"gProofServ undefined");
11822 Warning(
"SaveWorkerInfo",
"all relevant worker lists is undefined");
11830 Error(
"SaveWorkerInfo",
11831 "cannot open %s for writing (errno: %d)",
fnwrk.Data(),
errno);
11848 Info(
"SaveWorkerInfo",
"request for additional line with ext: '%s'",
addlogext.Data());
11860 logfile =
wrk->GetWorkDir();
11861 if (re.Match(logfile) == 2) logfile = re[1];
11865 wrk->GetUser(),
wrk->GetName(),
wrk->GetPort(), status,
11866 wrk->GetOrdinal(), logfile.
Data());
11870 wrk->GetUser(),
wrk->GetName(),
wrk->GetPort(), status,
11880 logfile =
wrk->GetWorkDir();
11881 if (re.Match(logfile) == 2) logfile = re[1];
11886 wrk->GetUser(),
wrk->GetName(),
wrk->GetPort(),
11887 wrk->GetOrdinal(), logfile.
Data());
11897 logfile =
sli->GetDataDir();
11898 if (re.Match(logfile) == 2) logfile = re[1];
11901 sli->GetName(),
sli->GetOrdinal(), logfile.
Data());
12039 if (
dsname.BeginsWith(
"TFileCollection:")) {
12041 dsname.ReplaceAll(
"TFileCollection:",
"");
12045 emsg.Form(
"TFileCollection %s not found in input list",
dset->GetName());
12049 input->RecursiveRemove(dataset);
12087 fi->SetTitle(
dsns.Data());
12114 if ((
fc =
mgr->GetDataSet(
dsn2.Data()))) {
12132 if (dataset->GetList()->First())
12133 ((
TFileInfo *)(dataset->GetList()->First()))->SetTitle(
dsn1.Data());
12148 if (!datasets || datasets->
GetSize() <= 0) {
12149 emsg.Form(
"no dataset(s) found on the master corresponding to: %s",
dsname.Data());
12154 emsg.Form(
"dataset pointer is null: corruption? - aborting");
12184 Int_t idx = tree.Index(
"/");
12185 if (idx !=
kNPOS) {
12186 TString dir = tree(0, idx+1);
12187 tree.Remove(0, idx);
12188 dset->SetDirectory(dir);
12190 dset->SetObjName(tree);
12193 dsTree = dataset->GetDefaultTreeName();
12205 msg.Form(
"+++ Info: dataset server mapping(s) DISABLED by user");
12207 msg.Form(
"+++ Info: dataset server mapping(s) modified by user");
12209 msg.Form(
"+++ Info: dataset server mapping(s) added by user");
12228 if (
strlen(os->GetName())) {
12232 " entry list %s not found", os->GetName()));
12234 if (
enl && (!(
enl->GetLists()) ||
enl->GetLists()->GetSize() <= 0)) {
12237 " no sub-lists in entry-list!"));
12248 emsg.Form(
"error integrating dataset %s", dataset->GetName());
12258 emsg.Form(
"error integrating dataset %s", dataset->GetName());
12268 while ((file = next())) {
12269 dataset->GetList()->Remove(file);
12280 if (pair->
Key())
delete pair->
Key();
12316 if (!
qr || !(
input =
qr->GetInputList()) ||
12329 if (
dstname.BeginsWith(
"cache:")) {
12331 dstname.ReplaceAll(
"cache:",
"");
12334 emsg.Form(
"input data file not found in cache (%s)",
srcname.Data());
12355 emsg.Form(
"could not create %s",
dstname.Data());
12359 emsg.Form(
"no input data!");
12363 ::Info(
"TProof::SaveInputData",
"input data saved to %s",
dstname.Data());
12385 if (!
qr || !(
input =
qr->GetInputList()))
return 0;
12393 emsg.Form(
"input data file not found in sandbox (%s)",
fname.Data());
12398 if (!
p || !
p->IsValid()) {
12399 emsg.Form(
"TProof object undefined or invalid: protocol error!");
12425 emsg.Form(
"input data file not found in cache (%s)",
fname.Data());
12431 added->SetName(
"PROOF_InputObjsFromFile");
12437 emsg.Form(
"could not get list of object keys from file");
12442 while ((k = (
TKey *)
nxk())) {
12450 if (
added->GetSize() > 0) {
12459 emsg.Form(
"could not open %s",
fname.Data());
12472 if (!
gROOT->IsBatch()) {
12476 gROOT->GetPluginManager()->FindHandler(
"TProofProgressLog"))) {
12479 ::Error(
"TProof::LogViewer",
"cannot load the relevant plug-in");
12491 ::Info(
"TProof::LogViewer",
12492 "batch mode: use TProofLog *pl = TProof::Mgr(\"%s\")->GetSessionLogs(%d)",
url, idx);
12494 ::Info(
"TProof::LogViewer",
12495 "batch mode: use TProofLog *pl = TProof::Mgr(\"lite\")->GetSessionLogs(%d)", idx);
12497 ::Info(
"TProof::LogViewer",
12498 "batch mode: use TProofLog *pl = TProof::Mgr(\"<master>\")->GetSessionLogs(%d)", idx);
12526 Warning(
"ShowMissingFiles",
"no (last) query found: do nothing");
12533 Info(
"ShowMissingFiles",
"no files missing in query %s:%s",
xqr->GetTitle(),
xqr->GetName());
12552 if (
im->GetTotBytes() > 0)
msz +=
im->GetTotBytes();
12553 if (
im->GetZipBytes() > 0)
mszzip +=
im->GetZipBytes();
12554 mev +=
im->GetEntries();
12555 Printf(
" %d. (%c) %s %s %lld",
ncf+
nmf, status,
fi->GetCurrentUrl()->GetUrl(),
im->GetName(),
im->GetEntries());
12557 Printf(
" %d. (%c) %s '' -1",
ncf+
nmf, status,
fi->GetCurrentUrl()->GetUrl());
12566 Printf(
" +++ %d file(s) missing, %d corrupted, i.e. %lld unprocessed events -->"
12567 " about %.2f%% of the total (%lld bytes, %lld zipped)",
12570 Printf(
" +++ %d file(s) missing, %d corrupted, i.e. %lld unprocessed events -->"
12571 " about %.2f%% of the total",
nmf,
ncf,
mev,
xf * 100.);
12587 Warning(
"GetMissingFiles",
"no (last) query found: do nothing");
12595 Info(
"ShowMissingFiles",
"no files missing in query %s:%s",
xqr->GetTitle(),
xqr->GetName());
12603 fcname.Form(
"%s.m0",
ds->GetName());
12606 fcname.Form(
"%s.m%d",
ds->GetName(),
j++);
12609 if (
ds)
fc->SetDefaultTreeName(
ds->GetObjName());
12631 Info(
"SetPerfTree",
"saving of the performance tree enabled (%s)",
fPerfTree.
Data());
12637 Info(
"SetPerfTree",
"saving of the performance tree disabled");
12649 Error(
"SafePerfTree",
"this TProof instance is invalid!");
12655 if (ref &&
strlen(ref) > 0) {
12657 Error(
"SafePerfTree",
"requested to use query '%s' but player instance undefined!", ref);
12662 Error(
"SafePerfTree",
"TQueryResult instance for query '%s' could not be retrieved", ref);
12666 sref.Form(
" for requested query '%s'", ref);
12669 Error(
"SafePerfTree",
"outputlist%s undefined or empty",
sref.Data());
12675 if (
fn.IsNull())
fn =
"perftree.root";
12678 if (
f.IsZombie()) {
12679 Error(
"SavePerfTree",
"could not open file '%s' for writing",
fn.Data());
12684 while ((obj =
nxo())) {
12686 if (
objname.BeginsWith(
"PROOF_")) {
12689 if (
objname ==
"PROOF_PerfStats" ||
12690 objname ==
"PROOF_PacketsHist" ||
12691 objname ==
"PROOF_EventsHist" ||
12692 objname ==
"PROOF_NodeHist" ||
12693 objname ==
"PROOF_LatencyHist" ||
12694 objname ==
"PROOF_ProcTimeHist" ||
12695 objname ==
"PROOF_CpuTimeHist")
12701 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)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
R__EXTERN TApplication * gApplication
const Bool_t kIterBackward
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
static unsigned int total
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void input
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t mask
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
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
R__EXTERN TProof * gProof
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,...)
Formats a string in a circular formatting buffer.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
Bool_t R_ISLNK(Int_t mode)
Bool_t R_ISDIR(Int_t mode)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
TSignalHandler * GetSignalHandler() const
Using a TBrowser one can browse all ROOT objects.
A chain is a collection of files containing TTree objects.
Collection abstract base class.
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.
void Print(Option_t *option="") const override
Default print for collections, calls Print(option, 1).
Bool_t Contains(const char *name) const
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Manages an element of a TDSet.
This class implements a data set to be used for PROOF processing.
void Validate()
Validate the TDSet by opening files.
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...
Utility class to draw objects in the feedback list during queries.
A List of entry numbers in a TTree or TChain.
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=nullptr)
Set the value of a resource or create a new resource.
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
Class describing a generic file including meta information.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
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.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual const char * GetClassName() const
void AddAfter(const TObject *after, TObject *obj) override
Insert object after object after in the list.
TObject * After(const TObject *obj) const override
Returns the object after object obj.
void Clear(Option_t *option="") override
Remove all objects from the list.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void Add(TObject *obj) override
TObject * Remove(TObject *obj) override
Remove object from the list.
TObject * Last() const override
Return the last object in the list. Returns 0 when list is empty.
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
virtual TObjLink * FirstLink() const
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
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 ...
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.
~TMergerInfo() override
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.
static void EnableSchemaEvolutionForAll(Bool_t enable=kTRUE)
Static function enabling or disabling the automatic schema evolution.
virtual void RemoveAll()
Remove all sockets from the monitor.
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.
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.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Collectable string class.
const char * GetName() const override
Returns name of object.
Mother of all ROOT objects.
@ 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 void RecursiveRemove(TObject *obj)
Recursively remove this object from a list.
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.
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
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 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).
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.
Named parameter, streamable and storable.
Longptr_t ExecPlugin(int nargs)
Int_t LoadPlugin()
Load the plugin library for this handler.
This class implements a plugin library manager.
Bool_t Notify() override
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 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 Bool_t IsValid() const
virtual Int_t GetFile(const char *, const char *, const char *=0)
virtual TProofDesc * GetProofDesc(Int_t id)
Get TProofDesc instance corresponding to 'id'.
virtual Int_t Stat(const char *, FileStat_t &, const char *=0)
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 override
Returns name of object.
Class to steer the merging of files produced on the workers.
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>, <u>, <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.
void Print(Option_t *option="") const override
Print status of PROOF cluster.
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
~TProof() override
Clean up PROOF environment.
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.
void Browse(TBrowser *b) override
Build the PROOF's structure in the browser.
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.
Int_t GetClientProtocol() const
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 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 adopt=true)
Set / change the output list.
void AddInput(TObject *obj)
Add obj to the input list.
virtual void SetInputList(TList *in, bool adopt=true)
Set / change the input list.
TMacro * GetLogFile() 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.
Double_t Rndm() override
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.
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Sequenceable collection abstract base class.
void Add() override
Add signal handler to system signal handler list.
void Remove() override
Remove signal handler from system signal handler list.
Bool_t IsEqual(const TObject *obj) const override
Used to compare slaveinfos by ordinal.
void Print(Option_t *option="") const override
Print slave info.
const char * GetOrdinal() const
void SetSysInfo(SysInfo_t si)
Setter for fSysInfo.
Int_t Compare(const TObject *obj) const override
Used to sort slaveinfos by ordinal.
Class describing a PROOF worker server.
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.
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
virtual Int_t RecvRaw(void *buffer, Int_t length, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
virtual Int_t SendObject(const TObject *obj, Int_t kind=kMESS_OBJECT)
Send an object.
virtual Int_t Reconnect()
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.
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)
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 & 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 FILE * TempFileName(TString &base, const char *dir=nullptr, const char *suffix=nullptr)
Create a secure temporary file by appending a unique 6 letter string to base.
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=nullptr)
Redirect standard output (stdout, stderr) to the specified file.
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 a directory 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 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 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 TString GetDirName(const char *pathname)
Return the directory name in pathname.
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 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.
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)
The packetizer is a load balancing object created for each query.
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
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Double_t Sqrt(Double_t x)
Returns the square root of x.