PROOF
- Warning
- The
classes
TProofDataSetManager
and TProofDataSetManagerFile have been renamed
TDataSetManager
and TDataSetManagerFile
- New
functionality
- Add support for session
queuing in the scheduler. This
allows to control the number of sessions allowed to process queries
concurrently. The feature is enabled by a new parameter 'queue:fifo' in
the 'xpd.schedparam'
directive. In case of static worker assignment
(default, random,
round-robin) the max number of running sessions can be limited by
another new parameter 'mxrun';
for
example
xpd.schedparam default
mxrun:3 queue:fifo
will run concurrently only 3 sessions. Additional requests are queued
and run as soon as one of the running
sessions goes idle. The current policy is FIFO, so that there is a
rotation among queued
sessions. In the case of load-based worker assignment, the max number
of running
queries is determined dynamically.
- Add support for repeat functionality in the xrd.worker
directive. To avoid repeating the same line N times
one can just add
'repeat=N'
in the line; for
example
xpd.worker worker
proofwrks:2093 repeat=4
will define 4 workers on port 2093 of machine 'proofwrks'.
- Add support for port specification via the directive
'xpd.port'
- Enable variable
substitution in 'xpd.' directives using the standard
Scalla mechanism described in
http://xrootd.slac.stanford.edu/doc/dev/Syntax_config.htm .
- Build also a binary named 'xproofd' which runs
a xrootd
daemon with only the XrdProofdProtocol (i.e. no data serving).
This simplifies setups when data serving is not needed and also allows
to better disantagle problems related to one specific protocol. The new
binary accepts the same arguments as 'xrootd' and parses the same
directives form the same configuration file, with the exception of
'xpd.protocol xproofd libXrdProofd.so' which should now be dropped. AN
alternative port can be specified via the new 'xpd.port' directive (see
above).
- Add support for 'MasterOnly' mode in starting a PROOF
session. This avoids starting the workers when one wants just to browse
the datasets or retrieve results. To start a session in 'MasterOnly'
mode enter "masteronly"
as second argument to TProof::Open, e.g.
root[]
TProof *p = TProof::Open("<masterurl>", "masteronly")
- Add full support for placeholders
<uid>,
<gid>, <group> and <homedir>
for the directives specified via 'xpd.putenv'
- Add the configuration directive 'proofservparents' to
allow specifying a different list of parent names for the 'proofserv'
tasks. This is needed to avoid untimely killing of 'proofserv'
instances in test setups when multiple instances of the daemons are
running on the same machines under different names.
- Add the possibility to switch to asynchronous mode while
running synchronously. A new button "Run
in background" has been added
to the dialog box. The behaviour of Ctrl-C has also been modified: the
user is prompted for a choice among continuing asynchronously, stopping
(terminating) or aborting the query.
- Add the possibility to define the dataset information
sources via the directive 'xpd.datasetsrc'.
In this way the permissions
should be set correctly and the related problems disappear.
- Record the logs from the ROOT version validation tests
(proofserv forked in test mode). In case of failure - or if the debug
flag is on - the log files are kept under
<xproof_adminpath>/rootsysvalidation/root.<tag>.log
(the <tag> has all the '/' replaced by '-'). This should
facilitate understanding the problems when in case of validation
failures.
- Add support for automatic
running of PROOF sessions in valgrind. The second
argument of TProof::Open is used to trigger the relevant
settings. To valgrind the master session start PROOF
with TProof::Open("<master>","valgrind=master");
to valgrind two workers sessions use
TProof::Open("<master>","valgrind=workers"); to valgrind
master and 2 workers, use
TProof::Open("<master>","valgrind=master+workers"). Other
combinations are available.
The valgrind logs are available with the tag
'<ordinal>-valgrind' in the log dialog or form
TProofMgr::GetSessionLogs() .
To add options to valgrind execute
TProof::AddEnvVar("PROOF_WRAPPERCMD",
"valgrind_opts:<options>") before starting the
session.
- Add new static TProof::LogViewer("<master>")
to graphically browse the session logs independently of the progress
dialog. The improved log window allows to chose a different master
and/or session and displays human readable information about
the starting time of the session being browsed.
- A set of scripts for quick interaction with a dataset
manager via PROOF are available under $ROOTSYS/etc/proof/utils/pq2 .
The scripts are prefixed
pq2 (proof
quick query - or
proof-dq2)
and allow to {browse, register, remove, verify} datasets on a given
PROOF master. See $ROOTSYS/etc/proof/utils/pq2/README for more
information.
- Improvements
- Enable by default schema evolution in TMessage; can be
disabled setting 'Proof.SchemaEvolution:
0' .
- Extend the functionality of the dataset API to obtaine
information on per-server base; add also two new methods:
- TProof::SetDataSetTreeName(<dataset>,<treename>):
set/change the default tree name in the TFileCollection;
- TProof::ExistsDataSet(<dataset>):
check
by-name the availability of a given dataset;
- In ProofBench,
- Load the macro before executing it. This allows to
circumvent a problem recently fixed giving less dependency on the
server version.
- In make_dset.C, simplification of the body and of the
signature, eliminating one redundant argument
- In TProofOutputFile, improve flexibility in defining the
URL for the local files server. The "LOCALDATASERVER" env is tested,
which can defined with placeholders via the xpd.putenv directive in the
xrootd/xproofd config files.
- Improving parsing of lines with memory info.
This solves occasional crashes while generating the memory
plots.
- In TProofMgr::GetSessionLogs:
- add the possibility to postpone the retrieval of the
logs files when the TProofLog object is created. This improved
functionality is exploited in the log window.
- add decoding of the session starting time and full
information about the master URL
- Enable new xrootd configuration options, including the
possibility to set the compiler and linker
- Cleanup of the TProofMgr functions DetachSession and
ShutdownSession, and better handling of the internal list registration,
to fix potential segvs when reopening a PROOF session inside the same
ROOT session.
- Optimize the way results are transferred and merged:
- Output objects are added to the same TMessage until a
HWM is reached (default 1MB; controlled by 'ProofServ.MsgSizeHWM');
this limits the number of transfers in the case of large numbers of
small objects.
- Reasonably small histograms (GetSize() <
MsgSizeHWM) are merged in one-go at the end instead of one-by-one to
exploit, for example, the better performance of TH1::Merge on the full
list of histos.
- Add possibility to compress the messages; this is
controlled by ProofServ.CompressMessage
<compression_level>
The default is still 'no compression' but this will allow to study the
impact of compression.
- Add sort of 'progress' counter for merging is now shown
on the client:
root [n] p->Process(...)
...
Mst-0: merging output objects ... / (4
workers still sending)
This asserts socket activity and fixes the timeout
problems during long merging phases reported in a few cases.
- In TFileMerger, create directly the output file at the
final destination do not make a local copy in the temp directory first
(if needed, one can always set the temporary destination to temp
followed by a TFile::Cp to the final destination); this allows to avoid
reported problems with small temp partitions (see Forum).
- In XrdProofConn, enable cycling through the
authentication protocol presented by the server. This only holds for
the choice of the protocol, because the server currently supports only
one full handshake.
- In test/stressProof.cxx, avoid interferences between the
settings used for the PROOF tutorial and possible local settings
(daemon, dataset manager).
- Add possibility to control the automatic re-loading of
the <proof.conf> file via the keyword
'reload:1'/'reload:0'
in the xpd.resource directive.
- Move the validation of <proof.conf> at the
moment of use; this allows to specify a file path and to dynamically
create/modify/destroy the file; used by PoD.
- Improve displaying speed of large log files
- Fixes
- Fix two severe
bugs in the way TTreeCache
was used in PROOF: one bug was de facto disactivating the cache; the
other was causing a std::bad_alloc exception to be thrown on workers
when opening a remote file after a local one.
- Fix several problems in TChain::Draw including
- drawing into an existing histogram, i.e.
chain->Draw("var>>myhist");
- treatment of histogram merging in case of small
statistics, i.e. when
the autobinning is not or only partially active;
- usage of existing canvases when different histogram
names are specified;
- Fix a problem causing a duplication of the final feedback
object
- Fix problem with determining the subdir name in
TFileMerger::MergeRecursive on Windows
- Make sure that the default sandbox is under $HOME/.proof
- Fix a problem with dataset validation in multi-level
master setups
- Fix a problem with ordinal numbers in multi-master setups
- Fix a problem with defining the internal paths for
executables when configuring with '--prefix'
- Fix backward-incompatibility issue giving the error
message "unknown action code: 5112"
- Fix a few problems with file retrieval from the cache
- Fix a problem with iteration of a std::list occasionally
causing seg-violations in TXSocket
- Fix a few problems preventing correct usage of entry
lists in PROOF
- Fix a problem with the permissions of the credentials
files created under <sandbox>/.creds
- Fix a potential problem while determining the log paths
in log retrieval
- Do not use vnsprintf in the XrdProofd plug-in, potential
source of deadlocks.
- Fix a problem overwriting the local environment settings
for the xrootd sec modules
- In XrdProofdProofServMgr::Destroy, fix segv in message
creation when all sessions are destroyed at once
- Fix a problem determining the relative time order of old
sessions for log retrieval
- In TProof::HandleInputMessage, fix possible double delete
after kPROOF_STOPPROCESS
- Fix a couple of issues on reconnection to a running
session (some dialog buttons not in the correct state; logs not
correctly redirected)
- Fix a problem creating spurious warnings during 'draw'
queries