Merge pull request #43185 from nextcloud/feat/db/dirty-queries-production

feat(db): Make dirty query logging available in production
pull/42933/head
Joas Schilling 4 months ago committed by GitHub
commit e0053e1c06
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -994,6 +994,15 @@ $CONFIG = [
*/
'loglevel_frontend' => 2,
/**
* Loglevel used by the dirty database query detection. Useful to identify
* potential database bugs in production. Set this to loglevel or higher to
* see dirty queries in the logs.
*
* Defaults to ``0`` (debug)
*/
'loglevel_dirty_database_queries' => 0,
/**
* If you maintain different instances and aggregate the logs, you may want
* to distinguish between them. ``syslog_tag`` can be set per instance

@ -276,7 +276,15 @@ class Connection extends PrimaryReadReplicaConnection {
} else {
// Read to a table that has been written to previously
// While this might not necessarily mean that we did a read after write it is an indication for a code path to check
$this->logger->debug('dirty table reads: ' . $sql, ['tables' => $this->tableDirtyWrites, 'reads' => $tables, 'exception' => new \Exception()]);
$this->logger->log(
(int) ($this->systemConfig->getValue('loglevel_dirty_database_queries', null) ?? 0),
'dirty table reads: ' . $sql,
[
'tables' => $this->tableDirtyWrites,
'reads' => $tables,
'exception' => new \Exception(),
],
);
}
$sql = $this->replaceTablePrefix($sql);

Loading…
Cancel
Save