From 3be908c6e16dfd673df040216258689e8b0a27ff Mon Sep 17 00:00:00 2001 From: Saloni Shah Date: Tue, 14 Jan 2025 17:49:02 -0500 Subject: [PATCH] PR feedback --- .../cromwell/database/slick/GroupMetricsSlickDatabase.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/database/sql/src/main/scala/cromwell/database/slick/GroupMetricsSlickDatabase.scala b/database/sql/src/main/scala/cromwell/database/slick/GroupMetricsSlickDatabase.scala index c1a15501d2..af7a7d694c 100644 --- a/database/sql/src/main/scala/cromwell/database/slick/GroupMetricsSlickDatabase.scala +++ b/database/sql/src/main/scala/cromwell/database/slick/GroupMetricsSlickDatabase.scala @@ -22,6 +22,10 @@ trait GroupMetricsSlickDatabase extends GroupMetricsSqlDatabase { .quotaExhaustionForGroupId(groupMetricsEntry.groupId) .update(groupMetricsEntry.quotaExhaustionDetected) } yield () + + // The transaction level is set to 'ReadCommitted' to avoid Postgres returning error `could not serialize + // access due to concurrent update` which happens in 'RepeatableRead' or higher isolation levels. + // See https://stackoverflow.com/questions/50797097/postgres-could-not-serialize-access-due-to-concurrent-update runTransaction(updateAction, TransactionIsolation.ReadCommitted) } @@ -43,7 +47,7 @@ trait GroupMetricsSlickDatabase extends GroupMetricsSqlDatabase { _ <- dataAccess.groupMetricsEntryIdsAutoInc += groupMetricsEntry } yield () - runTransaction(insertAction, TransactionIsolation.ReadCommitted) + runTransaction(insertAction) .recoverWith { case ex if ex.isInstanceOf[SQLIntegrityConstraintViolationException] || (ex