Skip to content

Commit 7f167d0

Browse files
authored
Merge pull request #95 from lsst/tickets/DM-52454
DM-52454: support different maxPayloadsPerPanDAJob for different ES tasks
2 parents 67050e7 + 25d1f6c commit 7f167d0

3 files changed

Lines changed: 19 additions & 3 deletions

File tree

config/bps_panda_eventservice.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# enable EventService to have multiple payloads per PanDA job
22

33
# list of bps job labels to enable EventService
4-
enableEventService: isr,step1
4+
# The format is label[:maxPayloadsPerPandaJob<Optional>].
5+
# If maxPayloadsPerPandaJob is not specified for a label, the global one will be used.
6+
enableEventService: isr:20,step1
57

68
# When EventService is enabled, if requestWalltime and maxWmsJobWalltime are defined,
79
# max_payloads_per_panda_job = int(maxWmsJobWalltime / requestWalltime)

doc/changes/DM-52454.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Support different maxPayloadsPerPandaJob for different ES tasks

python/lsst/ctrl/bps/panda/utils.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,9 +636,19 @@ def add_idds_work(config, generic_workflow, idds_workflow):
636636
order_id_map = {}
637637
job_name_to_order_id_map = {}
638638
order_id_map_file = None
639+
max_payloads_per_panda_job_by_label = {}
639640
if enable_event_service:
640641
enable_event_service = enable_event_service.split(",")
641-
enable_event_service = [i.strip() for i in enable_event_service]
642+
enable_event_service_tmp = []
643+
for es_def in enable_event_service:
644+
if ":" in es_def:
645+
es_label, m_payloads = es_def.split(":")
646+
else:
647+
es_label, m_payloads = es_def, max_payloads_per_panda_job
648+
es_label = es_label.strip()
649+
enable_event_service_tmp.append(es_label)
650+
max_payloads_per_panda_job_by_label[es_label] = int(m_payloads)
651+
enable_event_service = enable_event_service_tmp
642652
if enable_job_name_map:
643653
_, order_id_map_filename = config.search(
644654
"orderIdMapFilename", opt={"default": PANDA_DEFAULT_ORDER_ID_MAP_FILE}
@@ -708,6 +718,9 @@ def add_idds_work(config, generic_workflow, idds_workflow):
708718
work_enable_event_service = False
709719
if enable_event_service and job_label in enable_event_service:
710720
work_enable_event_service = True
721+
max_payloads_per_panda_job_current = max_payloads_per_panda_job_by_label.get(
722+
job_label, max_payloads_per_panda_job
723+
)
711724
work, files = _make_doma_work(
712725
config,
713726
generic_workflow,
@@ -718,7 +731,7 @@ def add_idds_work(config, generic_workflow, idds_workflow):
718731
enable_job_name_map=enable_job_name_map,
719732
order_id_map_files=order_id_map_files,
720733
es_label=job_label,
721-
max_payloads_per_panda_job=max_payloads_per_panda_job,
734+
max_payloads_per_panda_job=max_payloads_per_panda_job_current,
722735
max_wms_job_wall_time=max_wms_job_wall_time,
723736
remote_filename=remote_archive_filename,
724737
qnode_map_filename=qnode_map_filename,

0 commit comments

Comments
 (0)