Large output

Hello,

I am trying to run a program that uses proof and whose output is large on the interactive batch at cern. I use the method described on the web: “Handling large outputs via ROOT files”. The problem is that the size of the output files exceeds my 1GB limit on afs and the program crashes when the size of the ~/.proof directory reaches this limit. I am trying to tell proof to store the output files in a tmp directory that has no size limit by calling

gEnv->SetValue( “ProofServ.Sandbox”, “/tmp/pleskot/output/”);

before starting the proof session in my main function. But it does not help - the files are stored still in the ~/.proof directory.
Please, could you advice me how to solve this issue? Thank you in advance,

Vojtech

Hi,

Please specify:

  1. Which ROOT version you are using.
  2. Whether you are using PROOF-Lite or standard PROOF
  3. If standard PROOF, how you set it up (the config files)

This said, setting values on the local session does not automatically set them on the PROOF processes. If you are using PROOF-lite, put the setting in $HOME/.rootrc : all processes read that file when created.
If you are using xrootd or xproofd, try putting the following line in the configuration file:

G. Ganis

Dear Mr. Ganis,

thank you very much for your help. After adding the line 

xpd.putrc ProofServ.Sandbox: /tmp/pleskot/output/

to my .rootrc file there is an apparent progress: the output file seems really to be merged in my /tmp/pleskot directory (there appeared many 0.x directories in /tmp/pleskot and each of them contains part of my output file). But I have some other problem…
I run this process many times on different input files. I wrote a simple shell script for this that loops over the input files and in each iteration of the loop runs my program and moves the output file to my eos area. But I discovered that not all of the output files are present in the eos area. But when I run the program once again to produce some of the missing output files it works.
But in each case I get this error message in the log files:

09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: -------------- output815.root : start (lxplus402.cern.ch) ------------
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: dir: file:///tmp/pleskot/0.2
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: raw dir: /tmp/pleskot/0.2
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: file name: output815.root
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: run type: create a merged file
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: merging option: keep remote
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: output file name: /tmp/pleskot/output815.root
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: ordinal: 0.2
09:58:58 14783 Wrk-0.2 | Info in TProofOutputFile::Print: -------------- output815.root : done -------------
09:58:58 14783 Wrk-0.2 | Error in TProofServLite::HandleSocketInput: retrieving message from input socket
09:58:58 14783 Wrk-0.2 | Info in TProofServLite::Terminate: starting session termination operations …
09:58:58 14783 Wrk-0.2 | Info in TProofServLite::Terminate: data directory ‘/tmp/pleskot/output//data/0.2/lxplus402.cern.ch-1330333112-14747’ has been removed
Terminate: termination operations ended: quitting!

I use proof-lite on lxplus machine at cern and the root version is 5.30.03. The content of my $HOME/.rootrc file is:

xpd.putrc ProofServ.Sandbox: /tmp/pleskot/output/
ProofLite.Sandbox: /tmp/pleskot/output
ProofLite.SessionDir: /tmp/pleskot/output
ProofLite.CacheDir: /tmp/pleskot/output
ProofLite.PackageDir: /tmp/pleskot/output

In my main function I do:

gEnv->SetValue( “ProofServ.Sandbox”, “/tmp/pleskot/output/”);
TProofMgr* mgr = 0;
TProof* proof = 0;
mgr = TProofMgr::Create("");
proof = mgr->CreateSession();
if (!proof) exit(-1);
proof->UploadPackage(“qcdProof.par”);//string must have the form: name_of_the_current_directory.par
proof->EnablePackage(“qcdProof”); // EFT: Clarify!!!
proof->SetParameter( “PROOF_UseTreeCache”, ( Int_t ) 0 );
chain->SetProof();
chain->Process(“derived_qcdSelector”,runOption);
proof->Close();
mgr->ShutdownSession(proof);
if (proof) delete proof;
if (mgr) delete mgr;
if (chain) delete chain;

I hope all this information helps. What should I do differently to get rid of the error and to get all the output files (and not only some of them) when running the program many times? Are the two problems connected? What does the error message mean?
Thank you in advance for your help.
Best regards

Vojtech