48 const char *workdir,
const char *msd,
Int_t nwk)
51 proof, stype, workdir, msd, nwk)));
69void TXSlave::DoError(
int level,
const char *location,
const char *fmt, va_list va)
const
89Bool_t TXSlaveInterruptHandler::Notify()
91 Info(
"Notify",
"Processing interrupt signal ...");
95 fSocket->SetInterrupt();
105 const char *workdir,
const char *msd,
Int_t nwk) :
TSlave()
147 Info(
"Init",
"service 'proofd' not found by GetServiceByName"
148 ": using default IANA assigned tcp port 1093");
152 Info(
"Init",
"port from GetServiceByName: %d", port);
190 iam =
"Local Client";
191 mode = (attach) ?
'A' :
'M';
193 Error(
"Init",
"Impossible PROOF <-> SlaveType Configuration Requested");
214 for (
TObject *o = next(); o != 0; o = next()) {
225 Info(
"Init",
"** NOT ** sending user envs - RemoteProtocol : %d",
231 alias +=
Form(
"|envs:%s", envlist.
Data());
238 Error(
"Init",
"while opening the connection to %s - exit", url.
GetUrl(
kTRUE));
246 Error(
"Init",
"some severe error occurred while opening "
262 Info(
"Init",
"user envs setting sent but unsupported remotely - RemoteProtocol : %d",
311 TString dpu = (ilog !=
kNPOS) ? buffer(0, ilog) : buffer;
316 buffer.
Remove(0, ilog +
sizeof(
"|log:") - 1);
322 Warning(
"ParseBuffer",
"expected log path not found in received startup buffer!");
341 Error(
"SetupServ",
"failed to receive slave startup message");
356 Error(
"SetupServ",
"incompatible PROOF versions (remote version "
434 Info(
"Interrupt",
"%p: deactivating from monitor %p",
this, mon);
438 Warning(
"Interrupt",
"%p: reference to PROOF missing",
this);
448 Info(
"Interrupt",
"Interrupt of type %d sent",
type);
461 Info(
"StopProcess",
"Request of type %d sent over", abort);
473 Int_t len =
sizeof(cproto);
474 memcpy((
char *)&cproto,
476 Int_t ns =
s->SendRaw(&cproto, len);
478 ::Error(
"TXSlave::GetProofdProtocol",
479 "sending %d bytes to proofd server [%s:%d]",
480 len, (
s->GetInetAddress()).GetHostName(),
s->GetPort());
487 Int_t nr =
s->RecvRaw(ibuf, len);
489 ::Error(
"TXSlave::GetProofdProtocol",
490 "reading %d bytes from proofd server [%s:%d]",
491 len, (
s->GetInetAddress()).GetHostName(),
s->GetPort());
500 len =
sizeof(rproto);
501 nr =
s->RecvRaw(&rproto, len);
503 ::Error(
"TXSlave::GetProofdProtocol",
504 "reading %d bytes from proofd server [%s:%d]",
505 len, (
s->GetInetAddress()).GetHostName(),
s->GetPort());
512 ::Info(
"TXSlave::GetProofdProtocol",
513 "remote proofd: buf1: %d, buf2: %d rproto: %d",
573 Printf(
"Proof: connection to master at %s:%d re-established",
576 Printf(
"Proof: connection to node '%s' at %s:%d re-established",
585 Info(
"HandleError",
"%p:%s:%s got called ... fProof: %p, fSocket: %p (valid: %d)",
599 Info(
"HandleError",
"%p: proof: %p",
this,
fProof);
613 TString msg(
Form(
"Worker '%s-%s' has been removed from the active list",
620 Warning(
"HandleError",
"%p: global reference to TProofServ missing",
this);
623 Warning(
"HandleError",
"%p: reference to PROOF missing",
this);
626 Printf(
"TXSlave::HandleError: %p: DONE ... ",
this);
643 Info(
"HandleInput",
"%p: %s: proof: %p, mon: %p",
649 Info(
"HandleInput",
"%p: %s: posting monitor %p",
this,
GetOrdinal(), mon);
655 Info(
"HandleInput",
"%p: %s: not active in current monitor"
656 " - calling TProof::CollectInputFrom",
659 Info(
"HandleInput",
"%p: %s: calling TProof::CollectInputFrom",
668 Warning(
"HandleInput",
"%p: %s: reference to PROOF missing",
this,
GetOrdinal());
682 Info(
"SetInterruptHandler",
"enter: %d", on);
UShort_t net2host(UShort_t x)
void Info(const char *location, const char *msgfmt,...)
void ErrorHandler(int level, const char *location, const char *fmt, va_list va)
General error handler function. It calls the user set error handler.
R__EXTERN TProofServ * gProofServ
const Int_t kPROOF_Protocol
R__EXTERN TVirtualMutex * gROOTMutex
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
TSlave * GetTXSlave(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)
static XSlaveInit xslave_init
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
void SetReady(TSocket *sock)
Called by TSocketHandler::Notify() to signal which socket is ready to be read or written.
virtual void DeActivate(TSocket *sock)
De-activate a socket.
TList * GetListOfActives() const
Returns a list with all active sockets.
Bool_t IsActive(TSocket *s) const
Check if socket 's' is in the active list.
The TNamed class is the base class for all named ROOT classes.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Collectable string class.
Mother of all ROOT objects.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual Int_t GetRemoteProtocol() const
TSocket * GetSocket() const
This class controls a Parallel ROOT Facility, PROOF, cluster.
TMonitor * fCurrentMonitor
void SetDataPoolUrl(const char *url)
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.
TSignalHandler * fIntHandler
Int_t GetLogLevel() const
TProofMgr::EServType fServType
static const TList * GetEnvVars()
Get environemnt variables.
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 CollectInputFrom(TSocket *s, Int_t endtype=-1, Bool_t deactonfail=kFALSE)
Collect and analyze available input from socket s.
virtual void Add()
Add signal handler to system signal handler list.
virtual Bool_t Notify()
Notify when signal occurs.
virtual void Remove()
Remove signal handler from system signal handler list.
Class describing a PROOF worker server.
static void SetTXSlaveHook(TSlave_t xslavehook)
Set hook to TXSlave ctor.
const char * GetName() const
Returns name of object.
virtual Bool_t IsValid() const
const char * GetOrdinal() const
virtual Int_t SetOption(ESockOptions opt, Int_t val)
Set socket options.
virtual Int_t Recv(TMessage *&mess)
Receive a TMessage object.
static Int_t GetClientProtocol()
Static method returning supported client protocol.
Int_t GetRemoteProtocol() const
virtual void Close(Option_t *opt="")
Close the socket.
virtual Bool_t IsValid() const
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
Int_t Atoi() const
Return integer value of string.
const char * Data() const
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
Ssiz_t Last(char c) const
Find last occurrence of a character c.
TString & Remove(Ssiz_t pos)
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual int GetServiceByName(const char *service)
Get port # of internet service.
virtual void AddFileHandler(TFileHandler *fh)
Add a file handler to the list of system file handlers.
virtual const char * Getenv(const char *env)
Get environment variable.
This class represents a WWW compatible URL.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
const char * GetPasswd() const
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
const char * GetOptions() const
const char * GetProtocol() const
This is the version of TSlave for workers servers based on XProofD.
void StopProcess(Bool_t abort, Int_t timeout)
Sent stop/abort request to PROOF server.
void Touch()
Touch the client admin file to proof we are alive.
void SetAlias(const char *alias)
Set an alias for this session.
void Interrupt(Int_t type)
Send interrupt to master or slave servers.
Int_t SetupServ(Int_t stype, const char *conffile)
Init a PROOF slave object.
Bool_t HandleError(const void *in=0)
Handle error on the input socket.
void SetInterruptHandler(Bool_t on=kTRUE)
Set/Unset the interrupt handler.
virtual ~TXSlave()
Destroy slave.
static Int_t GetProofdProtocol(TSocket *s)
Find out the remote proofd protocol version.
Int_t Ping()
Ping the remote master or slave servers.
void Close(Option_t *opt="")
Close slave socket.
Bool_t HandleInput(const void *in=0)
Handle asynchronous input on the socket.
TSignalHandler * fIntHandler
TObjString * SendCoordinator(Int_t kind, const char *msg=0, Int_t int2=0)
Send message to intermediate coordinator.
void ParseBuffer()
Parse fBuffer after a connection attempt.
void DoError(int level, const char *location, const char *fmt, va_list va) const
Interface to ErrorHandler (protected).
void Init(const char *host, Int_t stype)
Init a PROOF slave object.
void FlushSocket()
Clean any input on the socket.
Int_t SendGroupPriority(const char *grp, Int_t priority)
Communicate to the coordinator the priprity of the group to which the user belongs Return 0 on succes...
Int_t Flush(TSocket *s)
Remove any reference to socket 's' from the global pipe and ready-socket queue.
Input handler for XProofD sockets.
static TXSocketHandler * GetSocketHandler(TFileHandler *h=0, TSocket *s=0)
Get an instance of the input socket handler with 'h' as handler, connected to socket 's'.
High level handler of connections to XProofD.
static void SetLocation(const char *loc="")
Set location string.
static constexpr double s
static constexpr double ns