-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix LHCInfoPer* PopCons to produce lumi-type IOVs when running in duringFill mode #43837
Fix LHCInfoPer* PopCons to produce lumi-type IOVs when running in duringFill mode #43837
Conversation
cms-bot internal usage |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-43837/38664
|
A new Pull Request was created by @francescobrivio for master. It involves the following packages:
@francescobrivio, @perrotta, @consuegs, @cmsbuild, @saumyaphor4252 can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
About "Further considerations" : The two mechanisms should be asynchronous so according to me it is ok . PoPCon should update more frequent (let's say 10 min) and HLT_refresh ~ 15 min |
for the BeamSpot (with a similar use case) we refresh every 2 LS in the HLT: GlobalTag = cms.ESSource( "PoolDBESSource",
DBParameters = cms.PSet(
connectionRetrialTimeOut = cms.untracked.int32( 60 ),
idleConnectionCleanupPeriod = cms.untracked.int32( 10 ),
enableReadOnlySessionOnUpdateConnection = cms.untracked.bool( False ),
enablePoolAutomaticCleanUp = cms.untracked.bool( False ),
messageLevel = cms.untracked.int32( 0 ),
authenticationPath = cms.untracked.string( "." ),
connectionRetrialPeriod = cms.untracked.int32( 10 ),
connectionTimeOut = cms.untracked.int32( 0 ),
enableConnectionSharing = cms.untracked.bool( True )
),
connect = cms.string( "frontier://FrontierProd/CMS_CONDITIONS" ),
globaltag = cms.string( "None" ),
snapshotTime = cms.string( "" ),
toGet = cms.VPSet(
cms.PSet( refreshTime = cms.uint64( 2 ),
record = cms.string( "BeamSpotOnlineLegacyObjectsRcd" )
),
cms.PSet( refreshTime = cms.uint64( 2 ),
record = cms.string( "BeamSpotOnlineHLTObjectsRcd" )
)
),
DumpStat = cms.untracked.bool( False ),
ReconnectEachRun = cms.untracked.bool( True ),
RefreshAlways = cms.untracked.bool( False ),
RefreshEachRun = cms.untracked.bool( True ),
RefreshOpenIOVs = cms.untracked.bool( False ),
pfnPostfix = cms.untracked.string( "" ),
pfnPrefix = cms.untracked.string( "" )
) IIRC trying to balance the load on the DB vs reconstruction accuracy. |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-43837/38683
|
Pull request #43837 was updated. @saumyaphor4252, @consuegs, @perrotta, @francescobrivio, @cmsbuild can you please check and sign again. |
Milestone for this pull request has been moved to CMSSW_14_1_X. Please open a backport if it should also go in to CMSSW_14_0_X. |
c0fb8b9
to
96cce8c
Compare
@cmsbuild please test |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-43837/39307
|
Pull request #43837 was updated. @francescobrivio, @perrotta, @consuegs, @saumyaphor4252 can you please check and sign again. |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a82a19/37859/summary.html Comparison SummarySummary:
|
+db |
This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @antoniovilela, @rappoccio, @sextonkennedy (and backports should be raised in the release meeting by the corresponding L2) |
+1 |
PR description:
Since, when used in the
duringFill
mode, both theLHCInfoPerLS
andLHCInfoPeFill
PopCons will have to populate tags in the HLT GT (with an ad hoc customization in the HLT menu to get updated conditions via therefreshTime
parameter), thetime-type
of the produced payloads/IOVs must be lumi based (seecond::TimeType::lumiid
).This PR introduces a differentiation in how the payload/IOVs are produced depending on the "mode" (passed as external paramenter to the cmsRun command) used to run the O2O:
endFill
mode: producetimestamp
-type payloadsduringFill
mode: producelumiid
-type payloadsFurther considerations
Currently the IOVs are produced directly from the LSs analyzed to get the payload data: if the appends of such IOVs to an
hlt
-sync'ed tag were to be performed via theuploadConditions.py
script, they would be all rejected due to the synchronization policy.But, after discussion with @mmusich, we realized that the PopCon upload mechanism does not exploits the uploader script, but rather uses the
PoolDBOutputService::writeMany
method, so the appends should be possible.Given the values of the parameters of the payloads (mainly
beta*
andcrossinging angle
) do not change very frequently, I suppose it is fine to upload the IOVs even though the HLT has moved on to processing a next LS: the next time therefreshParameter
mechanism kicks in, the conditions consumed by HLT should be updated with the updated values.Alternatively one could use the
OnlineDBOutputService::writeIOVForNextLumisection
method (which is used for the OnlineBeamSpot workflow), which reads the LS currently being processed in HLT and writes the payload tocurrentLS+latency
, to guarantee an upload "in the future" wrt what HLT is processing.The drawback is that this would require significant changes in the code (probably the whole module would have to be moved outside the PopCon infrastructure).
@JanChyczynski @mmusich @vavati @fwyzard Any suggestion is more than welcome, especially on this last point!
I'm opening this as draft PR since there are still a few points to be addressed:
addEmptyPayload()
method is usedPR validation:
Some preliminary private tests, forcing the time-type of the tags to be produced as
lumiid
even inendFill
mode, show that the IOVs are correctly created as LS based and the intervals match the LSs from OMS.Command examples:
Backport:
Not a backport, eventual 133X backports will be opened depending on the 2024 data-taking schedule - to be decided.