Mercurial > hg > orthanc-databases
comparison 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 |
comparison
equal
deleted
inserted
replaced
233:7d46c99523a2 | 234:d1b124d116c1 |
---|---|
67 error == CR_SERVER_LOST || | 67 error == CR_SERVER_LOST || |
68 error == ER_QUERY_INTERRUPTED) | 68 error == ER_QUERY_INTERRUPTED) |
69 { | 69 { |
70 throw Orthanc::OrthancException(Orthanc::ErrorCode_DatabaseUnavailable); | 70 throw Orthanc::OrthancException(Orthanc::ErrorCode_DatabaseUnavailable); |
71 } | 71 } |
72 else if (error == ER_LOCK_DEADLOCK) | |
73 { | |
74 throw Orthanc::OrthancException(Orthanc::ErrorCode_DatabaseCannotSerialize); | |
75 } | |
72 else | 76 else |
73 { | 77 { |
74 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); | 78 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); |
75 } | 79 } |
76 } | 80 } |
625 protected: | 629 protected: |
626 virtual IDatabase* TryOpen() | 630 virtual IDatabase* TryOpen() |
627 { | 631 { |
628 std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); | 632 std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); |
629 db->Open(); | 633 db->Open(); |
634 db->Execute("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false); | |
630 return db.release(); | 635 return db.release(); |
631 } | 636 } |
632 | 637 |
633 public: | 638 public: |
634 Factory(const MySQLParameters& parameters) : | 639 Factory(const MySQLParameters& parameters) : |