Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-02-25 18:18:02 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2022-03-02 14:59:08 +0300
commitfc8b80a44f35dec465f52e000b1258aa4cce8835 (patch)
tree35597188575fe7c073a499a680a2e200b706bbd8
parent964d5bca697770e83cc54d8c151bf33b483e71b4 (diff)
Add event logging for db and redis connectionbackport/31124/stable23
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r--lib/private/DB/Connection.php12
-rw-r--r--lib/private/RedisFactory.php12
-rw-r--r--lib/private/Server.php2
3 files changed, 21 insertions, 5 deletions
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 9efacb0f9ae..237323a0ddf 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -81,7 +81,17 @@ class Connection extends \Doctrine\DBAL\Connection {
*/
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 3062be28a78..89af26132f3 100644
--- a/lib/private/RedisFactory.php
+++ b/lib/private/RedisFactory.php
@@ -26,6 +26,8 @@
*/
namespace OC;
+use OCP\Diagnostics\IEventLogger;
+
class RedisFactory {
public const REDIS_MINIMAL_VERSION = '3.1.3';
public const REDIS_EXTRA_PARAMETERS_MINIMAL_VERSION = '5.3.0';
@@ -33,16 +35,18 @@ class RedisFactory {
/** @var \Redis|\RedisCluster */
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() {
@@ -113,6 +117,7 @@ class RedisFactory {
$port = null;
}
+ $this->eventLogger->start('connect:redis', 'Connect to redis and send AUTH, SELECT');
// Support for older phpredis versions not supporting connectionParameters
if ($connectionParameters !== null) {
// Non-clustered redis requires connection parameters to be wrapped inside `stream`
@@ -133,6 +138,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 fc1dd74e4b4..e86a3731942 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -718,7 +718,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) {