@@ -202,7 +202,9 @@ def post_process_execution(
202
202
job_kwargs = adaptors .make_system_job_kwargs (
203
203
resource , execution_content , adaptor .resources
204
204
)
205
- compute_sessionmaker = db_utils .get_compute_sessionmaker ()
205
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
206
+ mode = db_utils .ConnectionMode .write
207
+ )
206
208
with compute_sessionmaker () as compute_session :
207
209
job = cads_broker .database .create_request (
208
210
session = compute_session ,
@@ -284,7 +286,9 @@ def get_jobs(
284
286
statement , self .job_table , back , sort_key , sort_dir
285
287
)
286
288
statement = utils .apply_limit (statement , limit )
287
- compute_sessionmaker = db_utils .get_compute_sessionmaker ()
289
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
290
+ mode = db_utils .ConnectionMode .read
291
+ )
288
292
catalogue_sessionmaker = db_utils .get_catalogue_sessionmaker ()
289
293
with compute_sessionmaker () as compute_session :
290
294
job_entries = compute_session .scalars (statement ).all ()
@@ -351,9 +355,22 @@ def get_job(
351
355
"""
352
356
user_uid = auth .authenticate_user (auth_header , portal_header )
353
357
portals = [p .strip () for p in portal_header .split ("," )]
354
- compute_sessionmaker = db_utils .get_compute_sessionmaker ()
355
- with compute_sessionmaker () as compute_session :
356
- job = utils .get_job_from_broker_db (job_id = job_id , session = compute_session )
358
+ try :
359
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
360
+ mode = db_utils .ConnectionMode .read
361
+ )
362
+ with compute_sessionmaker () as compute_session :
363
+ job = utils .get_job_from_broker_db (
364
+ job_id = job_id , session = compute_session
365
+ )
366
+ except ogc_api_processes_fastapi .exceptions .NoSuchJob :
367
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
368
+ mode = db_utils .ConnectionMode .write
369
+ )
370
+ with compute_sessionmaker () as compute_session :
371
+ job = utils .get_job_from_broker_db (
372
+ job_id = job_id , session = compute_session
373
+ )
357
374
if job ["portal" ] not in portals :
358
375
raise ogc_api_processes_fastapi .exceptions .NoSuchJob ()
359
376
auth .verify_permission (user_uid , job )
@@ -407,12 +424,34 @@ def get_job_results(
407
424
structlog .contextvars .bind_contextvars (job_id = job_id )
408
425
user_uid = auth .authenticate_user (auth_header , portal_header )
409
426
structlog .contextvars .bind_contextvars (user_id = user_uid )
410
- compute_sessionmaker = db_utils .get_compute_sessionmaker ()
411
- with compute_sessionmaker () as compute_session :
412
- job = utils .get_job_from_broker_db (job_id = job_id , session = compute_session )
413
- auth .verify_permission (user_uid , job )
414
- results = utils .get_results_from_broker_db (job = job , session = compute_session )
415
- handle_download_metrics (job , results )
427
+ try :
428
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
429
+ mode = db_utils .ConnectionMode .read
430
+ )
431
+ with compute_sessionmaker () as compute_session :
432
+ job = utils .get_job_from_broker_db (
433
+ job_id = job_id , session = compute_session
434
+ )
435
+ auth .verify_permission (user_uid , job )
436
+ results = utils .get_results_from_broker_db (
437
+ job = job , session = compute_session
438
+ )
439
+ except (
440
+ ogc_api_processes_fastapi .exceptions .NoSuchJob ,
441
+ ogc_api_processes_fastapi .exceptions .ResultsNotReady ,
442
+ ):
443
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
444
+ mode = db_utils .ConnectionMode .write
445
+ )
446
+ with compute_sessionmaker () as compute_session :
447
+ job = utils .get_job_from_broker_db (
448
+ job_id = job_id , session = compute_session
449
+ )
450
+ auth .verify_permission (user_uid , job )
451
+ results = utils .get_results_from_broker_db (
452
+ job = job , session = compute_session
453
+ )
454
+ handle_download_metrics (job , results )
416
455
return results
417
456
418
457
def delete_job (
@@ -441,7 +480,9 @@ def delete_job(
441
480
structlog .contextvars .bind_contextvars (job_id = job_id )
442
481
user_uid = auth .authenticate_user (auth_header , portal_header )
443
482
structlog .contextvars .bind_contextvars (user_id = user_uid )
444
- compute_sessionmaker = db_utils .get_compute_sessionmaker ()
483
+ compute_sessionmaker = db_utils .get_compute_sessionmaker (
484
+ mode = db_utils .ConnectionMode .write
485
+ )
445
486
with compute_sessionmaker () as compute_session :
446
487
job = utils .get_job_from_broker_db (job_id = job_id , session = compute_session )
447
488
auth .verify_permission (user_uid , job )
0 commit comments