diff Framework/MySQL/MySQLDatabase.cpp @ 234:d1b124d116c1

PostgreSQL index plugin handles retries for collisions between multiple writers
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 08 Apr 2021 10:50:01 +0200
parents a4918d57435c
children d1d2edbbe6fb
line wrap: on
line diff
--- a/Framework/MySQL/MySQLDatabase.cpp	Tue Apr 06 15:07:27 2021 +0200
+++ b/Framework/MySQL/MySQLDatabase.cpp	Thu Apr 08 10:50:01 2021 +0200
@@ -69,6 +69,10 @@
       {
         throw Orthanc::OrthancException(Orthanc::ErrorCode_DatabaseUnavailable);
       }
+      else if (error == ER_LOCK_DEADLOCK)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_DatabaseCannotSerialize);
+      } 
       else
       {
         throw Orthanc::OrthancException(Orthanc::ErrorCode_Database);
@@ -627,6 +631,7 @@
       {
         std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_));
         db->Open();
+        db->Execute("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false);
         return db.release();
       }