Hello,
I am trying to learn how large output files are treated in PROOF. I followed the instructions on the PROOF web pages but my program still crashes during the file merging. If I look at the log file there is this error:
Error in TProofServLite::HandleSocketInput: retrieving message from input socket
I use PROOF-Lite on my laptop with two cores and with ROOT 30/00 installed. My selector has these attributes:
TProofOutputFile *m_ProofFile;
TFile *m_largeOutFile;
and in SlaveBegin I do:
TString option = GetOption();
m_ProofFile = new TProofOutputFile(“SimpleNtuple.root”, “M”);
TDirectory *savedir = gDirectory;
m_largeOutFile = m_ProofFile->OpenFile(“RECREATE”);
if (m_largeOutFile && m_largeOutFile->IsZombie()) SafeDelete(m_largeOutFile);
savedir->cd();
if (!m_largeOutFile) {
Info(“SlaveBegin”, “could not create ‘%s’: instance is invalid!”, m_ProofFile->GetName());
return;
}
m_tree=new TTree(“simpleTree”,“simpleTree”);
m_tree->Branch(“NParticles”,&m_NParticles);
m_tree->SetDirectory(m_largeOutFile);
In the Process method I just fill the tree with a few numbers. In SlaveTerminate I do:
if (m_largeOutFile) {
std::cout << " output file" << m_largeOutFile->GetName() << std::endl;
TDirectory *savedir = gDirectory;
m_largeOutFile->cd();
m_tree->Write();
m_ProofFile->Print();
fOutput->Add(m_ProofFile);
m_tree->SetDirectory(0);
gDirectory = savedir;
m_largeOutFile->Close();
}
else{
std::cout << "!!!file not open!!! " << std::endl;
}
Please, could you tell me what is wrong? Thank you in advance,
Vojtech Pleskot