diff options
author | Julius Härtl <jus@bitgrid.net> | 2022-02-25 18:18:02 +0300 |
---|---|---|
committer | backportbot[bot] <backportbot[bot]@users.noreply.github.com> | 2022-03-02 14:59:05 +0300 |
commit | b73674950b6c51d182c781af6ca219bc43cc6af7 (patch) | |
tree | 3d247a781ffed433bf19d825f21dbceaf66bac56 | |
parent | d29da6da4d604ba1087dfc779bb5dac071d36c69 (diff) |
Add event logging for db and redis connectionbackport/31124/stable21
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r-- | lib/private/DB/Connection.php | 12 | ||||
-rw-r--r-- | lib/private/RedisFactory.php | 11 | ||||
-rw-r--r-- | lib/private/Server.php | 2 |
3 files changed, 20 insertions, 5 deletions
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php index 92f89dab5d2..be57254d978 100644 --- a/lib/private/DB/Connection.php +++ b/lib/private/DB/Connection.php @@ -79,7 +79,17 @@ class Connection extends ReconnectWrapper { */ public function connect() { try { - return parent::connect(); + if ($this->_conn) { + return parent::connect(); + } + + // Only trigger the event logger for the initial connect call + $eventLogger = \OC::$server->getEventLogger(); + $eventLogger->start('connect:db', 'db connection opened'); + $status = parent::connect(); + $eventLogger->end('connect:db'); + + return $status; } catch (Exception $e) { // throw a new exception to prevent leaking info from the stacktrace throw new Exception('Failed to connect to the database: ' . $e->getMessage(), $e->getCode()); diff --git a/lib/private/RedisFactory.php b/lib/private/RedisFactory.php index 52e69a18778..71747ef1988 100644 --- a/lib/private/RedisFactory.php +++ b/lib/private/RedisFactory.php @@ -27,20 +27,24 @@ namespace OC; +use OCP\Diagnostics\IEventLogger; + class RedisFactory { /** @var \Redis */ private $instance; - /** @var SystemConfig */ - private $config; + private SystemConfig $config; + + private IEventLogger $eventLogger; /** * RedisFactory constructor. * * @param SystemConfig $config */ - public function __construct(SystemConfig $config) { + public function __construct(SystemConfig $config, IEventLogger $eventLogger) { $this->config = $config; + $this->eventLogger = $eventLogger; } private function create() { @@ -97,6 +101,7 @@ class RedisFactory { if (isset($config['dbindex'])) { $this->instance->select($config['dbindex']); } + $this->eventLogger->end('connect:redis'); } } diff --git a/lib/private/Server.php b/lib/private/Server.php index 9520da314d1..d939e1954a5 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -708,7 +708,7 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService('RedisFactory', function (Server $c) { $systemConfig = $c->get(SystemConfig::class); - return new RedisFactory($systemConfig); + return new RedisFactory($systemConfig, $c->getEventLogger()); }); $this->registerService(\OCP\Activity\IManager::class, function (Server $c) { |