dmwm / WMCore

Core workflow management components for CMS.
Apache License 2.0
46 stars 107 forks source link

RFCPCERNImpl.py can't create directories #3223

Closed samircury closed 12 years ago

samircury commented 12 years ago

(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.

samircury commented 12 years ago

samir: Title is misleading, it seems we're using :

https://svnweb.cern.ch/trac/CMSDMWM/browser/WMCore/trunk/src/python/WMCore/Storage/Backends/RFCPCERNImpl.py

samircury commented 12 years ago

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.

samircury commented 12 years ago

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 commented 12 years ago

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

DMWMBot commented 12 years ago

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 commented 12 years ago

hufnagel: Superseded by #3280. Test that, if it does not work complain on that ticket.