From 4da5a741927e512464358f1d717019389e350e66 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 30 May 2016 12:09:42 +0200 Subject: Add a warning when the transaction isolation level is not READ_COMMITED --- settings/admin.php | 13 +++++++++++++ settings/templates/admin.php | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/settings/admin.php b/settings/admin.php index 5bddd4bc5e5..6fb65b013e6 100644 --- a/settings/admin.php +++ b/settings/admin.php @@ -103,6 +103,19 @@ $externalBackends = (count($backends) > 1) ? true : false; $template->assign('encryptionReady', \OC::$server->getEncryptionManager()->isReady()); $template->assign('externalBackendsEnabled', $externalBackends); +/** @var \Doctrine\DBAL\Connection $connection */ +$connection = \OC::$server->getDatabaseConnection(); +try { + if ($connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) { + $template->assign('invalidTransactionIsolationLevel', false); + } else { + $template->assign('invalidTransactionIsolationLevel', $connection->getTransactionIsolation() !== \Doctrine\DBAL\Connection::TRANSACTION_READ_COMMITTED); + } +} catch (\Doctrine\DBAL\DBALException $e) { + // ignore + $template->assign('invalidTransactionIsolationLevel', false); +} + $encryptionModules = \OC::$server->getEncryptionManager()->getEncryptionModules(); $defaultEncryptionModuleId = \OC::$server->getEncryptionManager()->getDefaultEncryptionModuleId(); diff --git a/settings/templates/admin.php b/settings/templates/admin.php index 6cf4b43c162..0cdefe10083 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -97,6 +97,15 @@ if (!$_['isAnnotationsWorking']) { +
  • + t('Your database does not run with "READ COMMITED" transaction isolation level. This can cause problems when multiple actions are executed in parallel.')); ?> +
  • + -- cgit v1.2.3