forked from qt-creator/qt-creator
Sqlite: Fix locking
Change-Id: I32a1435db21f6d891dd9bed4faada704aeaf43af Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -238,22 +238,6 @@ void Database::sessionRollback()
|
||||
m_statements->rollbackBegin.execute();
|
||||
}
|
||||
|
||||
void Database::lock()
|
||||
{
|
||||
m_databaseMutex.lock();
|
||||
#ifdef UNIT_TESTS
|
||||
m_isLocked = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
void Database::unlock()
|
||||
{
|
||||
#ifdef UNIT_TESTS
|
||||
m_isLocked = false;
|
||||
#endif
|
||||
m_databaseMutex.unlock();
|
||||
}
|
||||
|
||||
DatabaseBackend &Database::backend()
|
||||
{
|
||||
return m_databaseBackend;
|
||||
|
@@ -154,14 +154,28 @@ public:
|
||||
|
||||
bool isLocked() const
|
||||
{
|
||||
#ifdef UNIT_TESTS
|
||||
#ifdef QT_DEBUG
|
||||
return m_isLocked;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
void lock() override;
|
||||
void unlock() override;
|
||||
|
||||
void lock() override
|
||||
{
|
||||
m_databaseMutex.lock();
|
||||
#ifdef QT_DEBUG
|
||||
m_isLocked = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
void unlock() override
|
||||
{
|
||||
#ifdef QT_DEBUG
|
||||
m_isLocked = false;
|
||||
#endif
|
||||
m_databaseMutex.unlock();
|
||||
}
|
||||
|
||||
void deferredBegin() override;
|
||||
void immediateBegin() override;
|
||||
|
@@ -127,11 +127,12 @@ TEST_F(SqliteDatabase, CreateDatabaseWithLockingModeNormal)
|
||||
|
||||
TEST_F(SqliteDatabase, ExclusivelyLockedDatabaseIsLockedForSecondConnection)
|
||||
{
|
||||
using namespace std::chrono_literals;
|
||||
Utils::PathString path{Utils::TemporaryDirectory::masterDirectoryPath()
|
||||
+ "/database_exclusive_locked.db"};
|
||||
Sqlite::Database database{path};
|
||||
|
||||
ASSERT_THROW(Sqlite::Database database2{path}, Sqlite::StatementIsBusy);
|
||||
ASSERT_THROW(Sqlite::Database database2(path, 1ms), Sqlite::StatementIsBusy);
|
||||
}
|
||||
|
||||
TEST_F(SqliteDatabase, NormalLockedDatabaseCanBeReopened)
|
||||
|
Reference in New Issue
Block a user