Closed samircury closed 12 years ago
samir: Title is misleading, it seems we're using :
samir: Problem is in this piece of code :
{{{
51 # check how the targetPFN looks like and parse out the target dir
52 targetdir = None
53
54 if targetdir == None:
55 regExpParser = re.compile('/+castor/(.)')
56 match = regExpParser.match(targetPFN)
57 if ( match != None ):
58 targetdir = os.path.dirname(targetPFN)
59
60 if targetdir == None:
61 regExpParser = re.compile('rfio:/+castor/(.)')
62 match = regExpParser.match(targetPFN)
63 if ( match != None ):
64 targetdir = os.path.dirname('/castor/' + match.group(1))
65
66 if targetdir == None:
67 regExpParser = re.compile('rfio:.path=/+castor/(.)')
68 match = regExpParser.match(targetPFN)
69 if ( match != None ):
70 targetdir = os.path.dirname('/castor/' + match.group(1))
71
72 # raise exception if we have no rule that can parse the target dir
73 if targetdir == None:
74 raise StageOutError("Cannot parse directory out of targetPFN")
}}}
Which means there's no condition to match the current input, which is described over the error, I got it as an input, which was enough to reproduce the conditions and prove there's no suitable regexp.
With the same input I managed to make one that works :
{{{
targetPFN= 'rfio://castorcms//castor/cern.ch/cms/store/backfill/2/T0TEST_500JEMBUNNIES/L1JetHPF/ALCARECO/v1/0000/00E9A368-1053-E111-81A5-001D09F28E80.root?svcClass=t0export&stageHost=castorcms' regExpParser = re.compile('rfio:/+castorcms/(.)\?._') match = regExpParser.match(targetPFN) print match.group(1) /castor/cern.ch/cms/store/backfill/2/T0TEST_500JEM_BUNNIES/L1JetHPF/ALCARECO/v1/0000/00E9A368-1053-E111-81A5-001D09F28E80.root }}}
I'm going to patch my instance with this and see how it works, will need help of devs to figure out when the change will be applied (job creation, submission, etc ??)
Once this works I can provide the patch.
samir: Ok, I couldn't test myself the patch, had to create new request that got stuck, straight to the point, Steve tested it for me and it seems to work fine, job succeeded adn file was staged out, here's the patch
sfoulkes: (In 8eb2a7c3a06be7f464dea5998aaf01ca8ed58d31) Adds new regexp to parse rfio path. Fixes #3223
From: Samir Cury Siqueira samir.cury.siqueira@cern.ch Signed-off-by: Steve Foulkes sfoulkes@fnal.gov
dballest: While running the stress test with WMagent in vocms13 I found that the fix was not correctly applied to RFCPCERNImpl.py, we get the same errors as before from Merge jobs.
For example: http://vocms13.cern.ch:5984/wmagent_jobdump%2Fjobs/_design/JobDump/_show/jobSummary/16696
{{{ Traceback: Traceback (most recent call last): File "/pool/lsf/cmsprod/214487402/job/WMCore.zip/WMCore/Storage/StageOutImpl.py", line 169, in call self.createOutputDirectory(targetPFN) File "/pool/lsf/cmsprod/214487402/job/WMCore.zip/WMCore/Storage/Backends/RFCPCERNImpl.py", line 80, in createOutputDirectory raise StageOutError("Cannot parse directory out of targetPFN") StageOutError: StageOutError Message: Cannot parse directory out of targetPFN ErrorCode : 60311 ModuleName : WMCore.Storage.StageOutError MethodName : init ErrorType : GeneralStageOutFailure ClassInstance : None FileName : /pool/lsf/cmsprod/214487402/job/WMCore.zip/WMCore/Storage/StageOutError.py ClassName : None LineNumber : 32 ErrorNr : 0
Traceback: None }}}
I verified interactively the fix provided by Samir and works, but in the source for RFCPCERNImpl.py the code found was:
{{{ if targetdir == None: regExpParser = re.compile('rfio:.path=/+castorcms/(.)\?.*') match = regExpParser.match(targetPFN) if ( match != None ): targetdir = os.path.dirname(match.group(1)) }}}
Which doesn't work for the targetPFN obtained.
hufnagel: Superseded by #3280. Test that, if it does not work complain on that ticket.
(or figure out which directory to create)
In vocms13, all is going fine but MergeJobs :
http://vocms13.cern.ch:8687/reqmgr/GlobalMonitor/
{{{ Traceback: Traceback (most recent call last): File "/pool/lsf/cmsprod/210465639/job/WMCore.zip/WMCore/Storage/StageOutImpl.py", line 169, in call self.createOutputDirectory(targetPFN) File "/pool/lsf/cmsprod/210465639/job/WMCore.zip/WMCore/Storage/Backends/RFCPCERNImpl.py", line 74, in createOutputDirectory raise StageOutError("Cannot parse directory out of targetPFN") StageOutError: StageOutError Message: Cannot parse directory out of targetPFN ErrorCode : 60311 ModuleName : WMCore.Storage.StageOutError MethodName : init ErrorType : GeneralStageOutFailure ClassInstance : None FileName : /pool/lsf/cmsprod/210465639/job/WMCore.zip/WMCore/Storage/StageOutError.py ClassName : None LineNumber : 32 ErrorNr : 0
Traceback: None }}}
More in (https://cmslogbook.cern.ch/elog/Tier-0+processing/7204)
I'm going to take a look myself as it looks "easy", but as I have to do other stuff also I'm creating this to follow up or if I spend too long in it I pass along.