Load builds on workers, but fails on master

Hi,
I’m back to developing on PROOF again… I’m having some trouble with TProof::Load. My code looks like the following:

The top of queryTestSimpleQuery.cxx looks like:

[code]#include “ntuple_CollectionTree.h”

#include “TH1I.h”
#include <TFile.h>

#include
#include
[/code]

I get the following errors back:

[code]22:10:50 20320 Mst-0 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx+ …
22:10:50 20320 Mst-0 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery_cxx.so
In file included from /tmp/rootcint_zSmxa7.h:3,
from /tmp/HkPq0s_cint.cxx:1:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:7:35: error: ntuple_CollectionTree.h: No such file or directory
Error: external preprocessing failed. :0:
!!!Removing /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/queryTestSimpleQuery_cxx_ACLiC_dict.cxx /phys/groups/tev/scratch4/users/proofbox/gwatts/session-t
ev11-1325743842-20320/master-0-tev11-1325743842-20320/queryTestSimpleQuery_cxx_ACLiC_dict.h !!!
Error: /phys/users/olsont/TEV/Atlas/root-5.28/bin/rootcint: error loading headers…
22:10:50 20320 Mst-0 | Error in : Dictionary generation failed!
22:10:50 20320 Mst-0 | Info in : Invoking compiler to check macro’s validity
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:7:35: error: ntuple_CollectionTree.h: No such file or directory
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:22: error: expected class-name before ΓÇÿ{ΓÇÖ token
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:31: error: ΓÇÿTTreeΓÇÖ has not been declared
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿvoid query0::SlaveBegin(int*)ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:33: error: ΓÇÿntuple_CollectionTreeΓÇÖ has not been declared
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿvoid query0::SlaveTerminate()ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:42: error: ΓÇÿntuple_CollectionTreeΓÇÖ has not been declared
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿvoid query0::Terminate()ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:53: error: ΓÇÿntuple_CollectionTreeΓÇÖ has not been declared
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿbool query0::Process(Long64_t)ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:63: error: ΓÇÿfDirectorΓÇÖ was not declared in this scope
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿvoid query0::ExecuteQueryBlock0()ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:86: error: ΓÇÿclass query0ΓÇÖ has no member named ΓÇÿRunNumberΓÇÖ
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿvoid query0::Book(TObject*)ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:116: error: ΓÇÿGetOutputListΓÇÖ was not declared in this scope
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx: In member function ΓÇÿT query0::LoadFromInputList(const std::string&)ΓÇÖ:
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:127: error: ΓÇÿfInputΓÇÖ was not declared in this scope
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:128: error: ΓÇÿcoutΓÇÖ is not a member of ΓÇÿstdΓÇÖ
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:132: error: ΓÇÿfInputΓÇÖ was not declared in this scope
/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/master-0-tev11-1325743842-20320/./queryTestSimpleQuery.cxx:134: error: ΓÇÿcoutΓÇÖ is not a member of ΓÇÿstdΓÇÖ
22:10:50 20453 Wrk-0.1 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx+ …
22:10:50 20453 Wrk-0.1 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/worker-0.1-tev02-1325743843-20453/./queryTestSimpleQuery_cxx.s
o
22:10:50 30079 Wrk-0.2 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx+ …
22:10:50 30079 Wrk-0.2 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/worker-0.2-tev03-1325743843-30079/./queryTestSimpleQuery_cxx.s
o
22:10:50 9074 Wrk-0.3 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx+ …
22:10:50 9074 Wrk-0.3 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/worker-0.3-tev04-1325743843-9074/./queryTestSimpleQuery_cxx.so

22:10:50 23610 Wrk-0.0 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx+ …
22:10:50 23610 Wrk-0.0 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1325743842-20320/worker-0.0-tev01-1325743843-23610/./queryTestSimpleQuery_cxx.s
o
Result of the load is 0[/code]

A few things to note here:

First, the build seems to work just fine on the workers, but fails on the master. Perhaps I have a directory mis-configured? How might I go about debugging that (the directory is long gone by the time I log into the cluster).

Second, the result of the load is “0” - even though the master build failed. That seems like it might be a bug to me…

I’m using 5.30.01 on the client, and (I’m pretty sure) the same on the server.

Thanks in advance for any help!

Looking a little harder, I discovered where the last query’s files were left. And on the master node I found the path where the .cxx file was located. The header files were not copied over to the same area. So it makes sense that the compile would fail under that circumstance.

So - I am obviously doing something wrong here - what would fix this? I would expect this use case is pretty common. :slight_smile:

Hi,
I’m looking to this. It looks like a regression.
The basic case loading a class implementation and header file is used regularly, for example in Alice.
The case with the additional file is not so common.

I let you know.

G. Ganis

Thanks! I saw the technique in the header file documentation so assumed it was fairly common. If you know a work around then please let me know. I was going to use SendFile, but I now see it is “protected”.

Hi,

I have found a possible workaround using TProofMgr::PutFile, which allows to interact with the master sandbox.
You need to define the location of the master session dir relative to the sandbox and then to copy all additional files in there:

   //
   // This is the master session dir relative to the sandbox
   TString masterbox = TString::Format("~/session-%s/master-0-%s/",gProof->GetSessionTag(), gProof->GetSessionTag());
   //
   // We now put in there all the additional files using the manager interface; workaround for the bug to be fixed
   proof.GetManager()->PutFile("ntuple_CollectionTree.h", masterbox.Data());
   proof.GetManager()->PutFile("junk_macro_parsettree_CollectionTree.C", masterbox.Data());
   //
   // This line must stay the same otherwise the additional files do not get to the workers ...
   int r = proof.Load("queryTestSimpleQuery.cxx+,ntuple_CollectionTree.h,junk_macro_parsettree_CollectionTree.C", true);

Let me know,
Gerri

Hi,
I’ve just realized that I may be running 5.28 on the proof server. I’ll know for sure on Tuesday monring. So perhaps this isn’t a regression! Sorry!

Cheers, Gordon.

Hi,
I had to change your code just a bit - it looks like for me I needed to use SessionTag twice, not SessionTag and then SessionID. Here is the code (sorry, not C++ here):

[code] private static void PushFileToMaster(ROOTNET.Interface.NTProof proof, string file)
{
var masterLocation = string.Format("~/session-{0}/master-0-{1}/", proof.SessionTag, proof.SessionTag);

        var mgr = proof.Manager;
        mgr.PutFile(file, masterLocation);
    }[/code]

The result is the following, which looks a lot more healthy:

[code]Starting master: opening connection …
Starting master: OK
Opening connections to workers: OK (4 workers)
Setting up worker servers: OK (4 workers)
PROOF set to parallel mode (4 workers)
tev11.phys.washington.edu: stat: cannot stat /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/master-0-tev11-1326099330-20839/ntuple_CollectionTree.h': No such file or directory [PutFile] Total 0.34 MB |====================| 100.00 % [0.3 MB/s] tev11.phys.washington.edu: stat: cannot stat/phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/master-0-tev11-1326099330-20839/junk_macro_parsettree_CollectionTree.C’: No such file or direct
ory
[PutFile] Total 0.00 MB |====================| 100.00 % [0.0 MB/s]
00:55:42 20839 Mst-0 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx++ …
00:55:42 20839 Mst-0 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/master-0-tev11-1326099330-20839/./queryTestSimpleQuery_cxx.so
Warning: link requested for unknown srcfile /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/master-0-tev11-1326099330-20839/./queryTestSimpleQuery.h /phys/groups/tev/scratch4/users/proofbox
/gwatts/session-tev11-1326099330-20839/master-0-tev11-1326099330-20839/queryTestSimpleQuery_cxx_ACLiC_linkdef.h:8:
00:55:42 16243 Wrk-0.3 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx++ …
00:55:42 16243 Wrk-0.3 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.3-tev04-1326099330-16243/./queryTestSimpleQuery_cxx.s
o
Warning: link requested for unknown srcfile /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.3-tev04-1326099330-16243/./queryTestSimpleQuery.h /phys/groups/tev/scratch4/users/proofb
ox/gwatts/session-tev11-1326099330-20839/worker-0.3-tev04-1326099330-16243/queryTestSimpleQuery_cxx_ACLiC_linkdef.h:8:
00:55:42 29131 Wrk-0.1 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx++ …
00:55:42 29131 Wrk-0.1 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.1-tev02-1326099330-29131/./queryTestSimpleQuery_cxx.s
o
Warning: link requested for unknown srcfile /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.1-tev02-1326099330-29131/./queryTestSimpleQuery.h /phys/groups/tev/scratch4/users/proofb
ox/gwatts/session-tev11-1326099330-20839/worker-0.1-tev02-1326099330-29131/queryTestSimpleQuery_cxx_ACLiC_linkdef.h:8:
00:55:42 29269 Wrk-0.0 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx++ …
00:55:42 29269 Wrk-0.0 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.0-tev01-1326099330-29269/./queryTestSimpleQuery_cxx.s
o
Warning: link requested for unknown srcfile /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.0-tev01-1326099330-29269/./queryTestSimpleQuery.h /phys/groups/tev/scratch4/users/proofb
ox/gwatts/session-tev11-1326099330-20839/worker-0.0-tev01-1326099330-29269/queryTestSimpleQuery_cxx_ACLiC_linkdef.h:8:
00:55:42 4083 Wrk-0.2 | Info in TXProofServ::HandleCache: loading macro queryTestSimpleQuery.cxx++ …
00:55:42 4083 Wrk-0.2 | Info in TUnixSystem::ACLiC: creating shared library /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.2-tev03-1326099330-4083/./queryTestSimpleQuery_cxx.so

Warning: link requested for unknown srcfile /phys/groups/tev/scratch4/users/proofbox/gwatts/session-tev11-1326099330-20839/worker-0.2-tev03-1326099330-4083/./queryTestSimpleQuery.h /phys/groups/tev/scratch4/users/proofbo
x/gwatts/session-tev11-1326099330-20839/worker-0.2-tev03-1326099330-4083/queryTestSimpleQuery_cxx_ACLiC_linkdef.h:8:
Result of the load is 0[/code]

[I’m doing the ++ to force a complete recompile to make sure it works with fresh files in this test]

I am not yet sure of what that request for the unknown link file means… perhaps I will run into a problem as I move further down the line to actually running!

Hi,

Was that not what I also had? Anyhow, the important thing is that it worked.

I think that ACLiC expects something also the header or something; it should not be serious …

Gerri

Hi,
Yes - that was what you had. I’m not sure what I thought you had. Sorry about that.

And, indeed, it does work - that error for a missing header isn’t fatal.

Cheers,
Gordon.

Did you find out what the root cause of this was? Was it, indeed, a regression? Or was it a bug in an older version of PROOF (i.e. 5.28)? If it has been fixed in recent releases, can you tell me what versions it is ok in? Thanks!

Hi,

I should have fixed it in the trunk and the relevant patch branches (5-28, 5-30, 5-32).
I think what happened is that the test macro I used at that time was picking up a header file in a separate directory but having the same name (i.e “thisdir/myclass.C,thatdir/myclass.h”). In such a case the thing worked, but of course it did not include your case.
I have added a test using this functionality in the test application.

Let me know how it goes if you are able to try the fix.

Gerri

Thanks! I will test when the next build comes out!