@@ -170,16 +170,21 @@ def _get_storage_client():
170170
171171
172172@functools .cache
173- def _get_central_butler ( uri ):
173+ def _get_write_butler ( ):
174174 """Lazy initialization of central Butler.
175+ """
176+ return get_central_butler (write_repo , instrument_name , writeable = True )
175177
176- Parameters
177- ----------
178- uri : `str`
179- The URI of the repository to load. Only one Butler object is
180- constructed for any repository.
178+
179+ @functools .cache
180+ def _get_read_butler ():
181+ """Lazy initialization of central Butler.
181182 """
182- return get_central_butler (uri , instrument_name )
183+ if read_repo != write_repo :
184+ return get_central_butler (read_repo , instrument_name , writeable = False )
185+ else :
186+ # Don't initialize an extra Butler from scratch
187+ return _get_write_butler ()
183188
184189
185190@functools .cache
@@ -192,7 +197,7 @@ def _get_local_repo():
192197 The directory containing the repo, to be removed when the
193198 process exits.
194199 """
195- repo = make_local_repo (local_repos , _get_central_butler ( read_repo ), instrument_name )
200+ repo = make_local_repo (local_repos , _get_read_butler ( ), instrument_name )
196201 tracker = LocalRepoTracker .get ()
197202 tracker .register (os .getpid (), repo .name )
198203 return repo
@@ -452,8 +457,8 @@ def create_app():
452457 # Check initialization and abort early
453458 _get_consumer ()
454459 _get_storage_client ()
455- _get_central_butler ( read_repo )
456- _get_central_butler ( write_repo )
460+ _get_read_butler ( )
461+ _get_write_butler ( )
457462 _get_local_repo ()
458463
459464 app = flask .Flask (__name__ )
@@ -500,8 +505,8 @@ def keda_start():
500505 # Check initialization and abort early
501506 _get_consumer ()
502507 _get_storage_client ()
503- _get_central_butler ( read_repo )
504- _get_central_butler ( write_repo )
508+ _get_read_butler ( )
509+ _get_write_butler ( )
505510 _get_local_repo ()
506511
507512 redis_session = RedisStreamSession (
@@ -923,8 +928,8 @@ def process_visit(expected_visit: FannedOutVisit):
923928
924929 # Create a fresh MiddlewareInterface object to avoid accidental
925930 # "cross-talk" between different visits.
926- mwi = MiddlewareInterface (_get_central_butler ( read_repo ),
927- _get_central_butler ( write_repo ),
931+ mwi = MiddlewareInterface (_get_read_butler ( ),
932+ _get_write_butler ( ),
928933 image_bucket ,
929934 expected_visit ,
930935 pre_pipelines ,
0 commit comments