@@ -48,6 +48,8 @@ type Plugin struct {
4848 bookkeepingClient * BookkeepingWrapper
4949
5050 pendingRunStops map [string ] /*envId*/ int64
51+ pendingO2Stops map [string ] /*envId*/ string
52+ pendingTrgStops map [string ] /*envId*/ string
5153}
5254
5355func NewPlugin (endpoint string ) integration.Plugin {
@@ -66,6 +68,8 @@ func NewPlugin(endpoint string) integration.Plugin {
6668 bookkeepingPort : portNumber ,
6769 bookkeepingClient : nil ,
6870 pendingRunStops : make (map [string ]int64 ),
71+ pendingO2Stops : make (map [string ]string ),
72+ pendingTrgStops : make (map [string ]string ),
6973 }
7074}
7175
@@ -260,6 +264,8 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) {
260264 return
261265 } else {
262266 p .pendingRunStops [envId ] = runNumber64
267+ p .pendingO2Stops [envId ] = ""
268+ p .pendingTrgStops [envId ] = ""
263269 log .WithField ("runNumber" , runNumber ).
264270 WithField ("partition" , envId ).
265271 Debug ("CreateRun call successful" )
@@ -345,15 +351,6 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) {
345351 Warning ("cannot acquire PDP topology description library file" )
346352 }
347353 tfbMode := env .GetKV ("" , "tfb_dd_mode" )
348- /*
349- odcTopologyFull, ok := env.Workflow().GetVars().Get("odc_topology_fullname")
350- if !ok {
351- log.WithField("runNumber", runNumber64).
352- WithField("partition", envId).
353- WithField("call", "UpdateRun").
354- Warning("cannot acquire ODC topology fullname")
355- }
356- */
357354 lhcPeriod := env .GetKV ("" , "lhc_period" )
358355 err = p .bookkeepingClient .UpdateRun (int32 (runNumber64 ), state , timeO2Start , timeO2End , timeTrgStart , timeTrgEnd , trg , pdpConfig , pdpTopology , tfbMode , lhcPeriod )
359356 if err != nil {
@@ -369,8 +366,17 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) {
369366 } else {
370367 var updatedRun string
371368 if function , ok := varStack ["__call_func" ]; ok && strings .Contains (function , "UpdateRunStop" ) {
372- updatedRun = "STOPPED"
373- delete (p .pendingRunStops , envId )
369+ if p .pendingO2Stops [envId ] == "" || (trgEnabled && p .pendingTrgStops [envId ] == "" ) {
370+ updatedRun = "INCOMPLETE"
371+ log .WithField ("runNumber" , runNumber64 ).
372+ WithField ("partition" , envId ).
373+ Debug ("UpdateRun call: run information incomplete" )
374+ } else {
375+ updatedRun = "STOPPED"
376+ delete (p .pendingRunStops , envId )
377+ delete (p .pendingO2Stops , envId )
378+ delete (p .pendingTrgStops , envId )
379+ }
374380 } else {
375381 updatedRun = "STARTED"
376382 }
@@ -457,9 +463,11 @@ func (p *Plugin) CallStack(data interface{}) (stack map[string]interface{}) {
457463
458464 O2StartTime := varStack ["run_start_time_ms" ]
459465 O2EndTime := varStack ["run_end_time_ms" ]
466+ p .pendingO2Stops [envId ] = O2EndTime
460467
461468 TrgStartTime := varStack ["trg_start_time_ms" ]
462469 TrgEndTime := varStack ["trg_end_time_ms" ]
470+ p .pendingTrgStops [envId ] = TrgEndTime
463471
464472 if _ , ok := p .pendingRunStops [envId ]; ok {
465473 return updateRunFunc (runNumber64 , "test" , O2StartTime , O2EndTime , TrgStartTime , TrgEndTime )
0 commit comments