@@ -1228,6 +1228,8 @@ def _export_subset(self, exposure_ids: set[int],
12281228 self .central_butler .registry .refresh ()
12291229
12301230 with lsst .utils .timer .time_this (_log , msg = "export_outputs (transfer)" , level = logging .DEBUG ):
1231+ # Transfer dimensions created by ingest in case it was never done in
1232+ # central repo (which is normal for dev).
12311233 # Transferring governor dimensions in parallel can cause deadlocks in
12321234 # central registry. We need to transfer our exposure/visit dimensions,
12331235 # so handle those manually.
@@ -1242,14 +1244,15 @@ def _export_subset(self, exposure_ids: set[int],
12421244 "visit_system_membership" ,
12431245 ]:
12441246 if dimension in self .butler .registry .dimensions :
1245- for record in self .butler .registry .queryDimensionRecords (
1247+ records = self .butler .registry .queryDimensionRecords (
12461248 dimension ,
12471249 where = "exposure in (exposure_ids)" ,
12481250 bind = {"exposure_ids" : exposure_ids },
12491251 instrument = self .instrument .getName (),
12501252 detector = self .visit .detector ,
1251- ):
1252- self .central_butler .registry .syncDimensionData (dimension , record , update = False )
1253+ )
1254+ # If records don't match, this is not an error, and central takes precedence.
1255+ self .central_butler .registry .insertDimensionData (dimension , * records , skip_existing = True )
12531256 transferred = self .central_butler .transfer_from (self .butler , datasets ,
12541257 transfer = "copy" , transfer_dimensions = False )
12551258 if len (transferred ) != len (datasets ):
0 commit comments