You are here

PROOF Frequently Asked Questions

This page is meant to collect answers to frequently raised issues. By its nature this page will be in continuous evolution.

  1. How to change the location of the sandbox (working directory) in PROOF-Lite
  2. PROOF gets stuck when reading data via the DPM or dCache xrootd doors
  3. XROOTD-dependent modules disabled by configure; XROOTD binaries and libraries not found
  4. Is the TTreeCache enabled by default in PROOF?
  5. Settings in TSelector::Begin are ignored on workers
  6. Sharing dataset meta-information
  7. Changing the ROOT version run by the master and workers
  8. Checking the result of Process
  9. Limiting number of workers
  10. The 'xproofd' executable or the plug-ins libNetx, libProofx are not found or not available
  11. ...

  1. How to change the location of the sandbox (working directory) in PROOF-Lite
    The sandbox location is controlled by the ROOT configuration variable 'ProofLite.Sandbox'; the default is '~/.proof'. The value must be changed before starting the PROOF-Lite session, i.e.
        root[] gEnv->SetValue("ProofLite.Sandbox", "/pool/proofbox")
        root[] TProof *proof = TProof::Open("")
    
    It can also be set for all runs in the $HOME/.rootrc file )or in the relevant 'rootrc' file):
        # Changing the location of the PROOF-Lite sandbox
        ProofLite.Sandbox: /pool/proofbox
    
  2. PROOF gets stuck when reading data via the DPM or dCache xrootd doors
    This misbehavior is caused by the fact that the XrdClientAdmin Locate function for those implemenations is not correctly implemented; as a consequence, during look-up the file URL is replaced by an URL which is not usable by PROOF, making all open attempts to end up in timeouts. The solution to this problem is to skip the look-up step. This can be achieved by setting the parameter "PROOF_LookupOpt" to "none" before running the query, i.e.
        root[] TProof *proof = TProof::Open(...)
        root[] proof->SetParameter("PROOF_LookupOpt", "none")
        root[] proof->Process(...)
    
    The setting can also be done for all queries in the relevant 'rootrc' file read by the master (or the client sesssion, in the case of PROOF-Lite) via the variable 'Proof.LookupOpt'; for example, for a standard cluster, the following setting can be add to the xproofd config file on the master:
       # Disable lookup for all queries
       xpd.putrc Proof.LookupOpt none
    
    Note that priority is always given to the settings of the current query: if lookup is disabled by default and it is needed for one query (for pure xrootd back-ends is advised) it can be enforced with
        root[] proof->SetParameter("PROOF_LookupOpt", "all")
    
  3. XROOTD-dependent modules disabled by configure; XROOTD binaries and libraries not found
    Starting with ROOT 5.32/00 the XROOTD package is not distributed anymore with ROOT. To build the ROOT plug-ins libNetx, libProofx and the ROOT binary xproofd, the relevant includes and libs are taken form an external standard installation. See the ROOT prerequisites page and the page dedicated to XROOTD.
  4. Is the TTreeCache enabled by default in PROOF?
    Yes. To disable it set the PROOF parameter 'PROOF_UseTreeCache' to 0 before exectuing Process, i.e.
        root[] proof->SetParameter("PROOF_UseTreeCache", 0)
        root[] proof->Process(...)
    
    The cache size is controlled by the parameter 'PROOF_CacheSize' (value in bytes). See also the dedicated section in the PROOF parameters page.
    You can also control the cache via the ROOTrc variables ProofPlayer.UseTreeCache and ProofPlayer.CacheSize to be set in the relevant .rootrc file or via xpd.putrc .
  5. Settings in TSelector::Begin are ignored on workers
    The Begin method of the selector is used for things which have exclusively to be done on the local (client) session; therefore is not called on the workers. The method SlaveBegin is called everywhere (locally and workers) and is the place where you should do the initialization. Some documentation is available at 'Developing a TSelector'.
  6. Sharing dataset meta-information
    To share meta-information about datasets, each user must initialize the TDataSetManager instance on the master from the same dataset repository directory. This is achieved via the directive xpd.datasetsrc in the master xproofd. For example:
    if masternode
    xpd.datasetsrc file url:/shared/dir/dataset opt:Av:Ar: 
    fi
    
    allows to share the directory /shared/dir/dataset, with each user space under
     /shared/dir/dataset/proofgroup/username
    
    with proofgroup the PROOF group ('default' if not specified; see http://root.cern.ch/drupal/content/defining-groups-users). The directories /shared/dir/dataset/proofgroup must be created by the admin and should be writable and readable by all users; typically their are owned by an admin user. Then PROOF will create the user subdirs, owned by the user, where the dataset metafiles (a ROOT file datasetname.root containing two TFileCollection) are stored.
  7. Changing the ROOT version run by master and workers
    Using the directive xpd.rootsys is possible to define a set of ROOT versions which can be run by the workers. See also Changing the default ROOT version.
  8. Checking the result of Process
    After processing, the output list contains an instance of TStatus named 'PROOF_Status' which contains the exit status of the query, which can be obtained with TStatus::GetExitStatus():
    proof->Process(...);
    TStatus *st = (TStatus *) proof->GetOutputList()->FindObject("PROOF_Status");
    if (st->GetExitStatus() != 0) { //Failure ... }
    
    There are three possible values, with the following meaning: 0 = success, 1 = stopped, 2 = abort.
    In the case some files (or portion of files) were not processed, the output list contains a list 'MissingFiles' with the TFileInfo instances describing the missing files. The methods TProof::ShowMissingFiles and TProof::GetMissingFiles allow a faster access to the information.
  9. Limiting number of workers
    It is possible to limit the number of workers started for a session using the 'workers=N' option to TProof::Open(...); for example, the following starts 10 workers:
    root [0] TProof *p = TProof::Open("master.some.wr", "workers=10")
    Starting master: opening connection ...
    Starting master: OK                                                 
    +++ Starting max 10 workers following the setting of PROOF_NWORKERS
    Opening connections to workers: OK (10 workers)                 
    Setting up worker servers: OK (10 workers)                 
    PROOF set to parallel mode (10 workers)
    root [1] 
    
    In some cases, it may be convenient to start the master only (to test connection or to do dataset management operations); that can be achieved using option 'masteronly':
    root [0] TProof *p = TProof::Open("master.some.wr", "masteronly")
    Starting master: opening connection ...
    Starting master: OK                                                 
    PROOF set to sequential mode
    root [1]
    
  10. The 'xproofd' executable or the plug-ins libNetx, libProofx are not found or not available
    Most likely XRootD was not available during the build; see this FAQ.
  11. ...