Varun Patil
5ecd3c4b49
feat(database): Add option to test for mariadb
...
There are some behavioral differences that apps may need to check for.
See discussion on #51175 for more info.
This preserves the existing behavior of getDatabaseProvider()
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2025-08-08 07:50:51 +07:00
Ferdinand Thiessen
5981b7eb51
chore: apply new CSFixer rules
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
# Conflicts:
# apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +07:00
Joas Schilling
ad7a050f96
fix: Revert "fix(db): Store last insert id before reconnect"
...
This reverts commit df94cceb7b .
There were records of some old IDs being read which is much worse
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-21 07:55:42 +07:00
Joas Schilling
df94cceb7b
fix(db): Store last insert id before reconnect
...
During a reconnect we are losing the connection and when the
realLastInsertId call is the one triggering the reconnect, it
does not return the ID. But inside the reconnect, we were able
to save the last insert id, so calling it a second time is going
to be successful.
We can not return the result on the initial call, as we are already
way deeper in the stack performing the actual database query on
the doctrine driver.
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-14 10:27:00 +07:00
Marcel Müller
0955b0a39d
feat: Add option to also log parameters to query log
...
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-19 21:29:26 +07:00
Varun Patil
c414ddee54
feat(db): add truncateTable method
...
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2025-03-02 10:36:13 +07:00
Robin Appelman
0a77ba99a2
feat: support migrating an instance to sharding
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-02-25 17:52:40 +07:00
Louis Chemineau
066c92f7b0
fix: Initialize lastConnectionCheck after first connection
...
We are checking whether the DB connection is alive once every 30 seconds. But when we are lacking the last check time, we are skipping the check and reconnect logic. This is causing the reconnect logic to never fire in those cases.
It seems to me that "those cases", are actually always the case, as upon initialization, we are not using the proper connection name to store the time.
In the `connect()` logic, when `$this->_conn` is null, `$this->getConnectionName()` is returning `replica`, so `$this->lastConnectionCheck` will be equal to `['replica' => time()];`
60711ea4cf/lib/private/DB/Connection.php (L215-L221)
60711ea4cf/lib/private/DB/Connection.php (L891-L893)
2b6d7bf65f/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php (L136-L139)
Then, if the connection name ends up as being 'primary', the reconnect logic is skipped:
60711ea4cf/lib/private/DB/Connection.php (L874-L880)
Follow-up of https://github.com/nextcloud/server/pull/41819
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-02-19 12:25:12 +07:00
Ferdinand Thiessen
a8f46af20f
chore: Add proper deprecation dates where missing
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-20 00:46:03 +07:00
provokateurin
9836e9b164
chore(deps): Update nextcloud/coding-standard to v1.3.1
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +07:00
Arthur Schiwon
edaa4d1432
fix(DB): do not assume sharding is always enabled
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:55:10 +07:00
Robin Appelman
fc05a67f19
fix: only allow pre-defined shards
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +07:00
Robin Appelman
62f8b6517f
feat: implement distributing partitioned queries over multiple shards
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +07:00
Robin Appelman
f5b3486744
feat: add option to automatically partition queries by specific tables
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:53 +07:00
Christoph Wurst
bdcfe5b8a9
fix(db): Increase log level for very slow transactions
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-08-27 10:12:14 +07:00
Daniel Kesselberg
af6de04e9e
style: update codestyle for coding-standard 1.2.3
...
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +07:00
Robin Appelman
7fbb981877
feat: add additional logging for database errors
...
including the stack trace of the current database transaction
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-24 15:35:07 +07:00
Joas Schilling
b656edc47c
fix(db): Fix md5 for oracle >= 20
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 14:13:56 +07:00
Joas Schilling
eeb6ddb176
fix(db): Deprecate `IExpressionBuilder::or()` and `IExpressionBuilder::and()` without parameters
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:16 +07:00
Joas Schilling
829f2b9bc7
fix(db): Promote the use of `getDatabaseProvider` to reduce the impage of removed upstream platforms
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:14 +07:00
Joas Schilling
c84580d53a
fix(db): `Doctrine\DBAL\Connection::executeUpdate()` is deprecated
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:12 +07:00
Joas Schilling
a4c1d7291f
fix(db): Use `createSchemaManager()` method as `getSchemaManager()` is deprecated
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:11 +07:00
John Molakvoæ
258bb03cf5
Merge branch 'master' into refactor/OC-Server-getSecureRandom
...
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-05-30 14:24:22 +07:00
Christoph Wurst
3bfba2042c
fix(db): Prevent two connections for single node databases
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-05-28 10:38:36 +07:00
Thomas Citharel
b0f5c759a8
Merge pull request #39589 from nextcloud/enh/set-nest-transactions-with-savepoints
...
set Doctrine to use nest transactions with savepoints
2024-05-27 16:53:53 +07:00
Josh
48b47f7903
fix(db): Log loong transaction times at debug level
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2024-05-25 09:07:43 +07:00
Andy Scherzinger
dae7c159f7
chore: Add SPDX header
...
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-24 13:11:22 +07:00
Robin Appelman
d6be80ceaf
feat: add option to add backtrace to the query logger
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-05-01 18:12:16 +07:00
Robin Appelman
8c10c78099
feat: add request id as comment to all queries
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-04-17 16:36:24 +07:00
Git'Fellow
5f519a2e7d
chore(db): move to OCP\Server
...
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-04-13 18:29:22 +07:00
Côme Chilliet
ec5133b739
fix: Apply new coding standard to all files
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-04-02 14:16:21 +07:00
Thomas Citharel
2a0815401e
feat(db): set Doctrine to use nest transactions with savepoints
...
Using nested transactions without savepoints is actually deprecated by Doctrine:
https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/transactions.html#transaction-nesting
Without savepoints, a nested transaction can be rollbacked but not
handled properly in the "real" transaction, leading to the following
error:
Transaction commit failed because the transaction has been marked for rollback only.
Ref
https://github.com/nextcloud/server/pull/36528#issuecomment-1639913965
(and possibly) https://github.com/nextcloud/server/issues/38902#issuecomment-1598075391
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-02-27 14:27:11 +07:00
Christoph Wurst
d52ebaa7cd
Merge pull request #43297 from nextcloud/fix/db/dirty-read-cool-off
...
fix(db): Let dirty writes cool off
2024-02-19 10:53:05 +07:00
Christoph Wurst
1f46e4b854
fix(db): Let dirty writes cool off
...
We can assume that after a few seconds a read will be clean again.
This is helpful for false warnings in long running processes.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-02-19 10:13:24 +07:00
Christoph Wurst
cf17a20835
fix(db): Give dirty read exception a message
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-02-15 09:14:47 +07:00
Christoph Wurst
aef28e191a
fix(db): Unify long transaction log/exception message
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-02-13 08:17:49 +07:00
Christoph Wurst
97152de9bf
fix(db): Execute dirty reads on the primary node
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-01-30 12:17:39 +07:00
Christoph Wurst
911ab393c0
feat(db): Make dirty query logging available in production
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-01-30 10:31:03 +07:00
Christoph Wurst
033a654389
Merge pull request #42929 from nextcloud/fix/db/transacted-read-not-dirty
...
fix(db): Do not log transacted reads as dirty read
2024-01-23 09:34:20 +07:00
Christoph Wurst
ab0d7c007d
fix(db): Remove very verbose dirty query logs
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-01-18 18:33:07 +07:00
Christoph Wurst
f54b08c224
fix(db): Do not log transacted reads as dirty read
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-01-18 13:37:36 +07:00
Julius Härtl
296096e069
fix: Add reconnect check in case of timeouts on the db side
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-12 14:38:01 +07:00
Julius Härtl
c17c42a0b2
feat: First attempt to track dirty tables after writes and switch back to replicas if reads go to other tables
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
debug: error log
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-12 11:02:50 +07:00
Julius Härtl
3e60092b7d
feat: Add logging for transaction time
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-01-12 11:02:50 +07:00
Julius Härtl
79c4986354
enh: Implement PrimaryReadReplicaConnection
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-12-16 20:27:37 +07:00
Joas Schilling
aa5f037af7
chore: apply changes from Nextcloud coding standards 1.1.1
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2023-11-23 10:36:13 +07:00
Joas Schilling
160298c556
fix(mysql): Remove custom MySQL workaround from 2015
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-10-06 15:29:25 +07:00
Joas Schilling
b202b139dd
fix(postgres): Remove old Postgres 9.4 workaround
...
Postgres 10 is the minimum in the meantime
and doctrine/dbal fixed this in 2.6.0 already
ref https://github.com/doctrine/dbal/pull/2614
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-10-06 15:29:25 +07:00
Joas Schilling
ad839dbb0a
fix(sqlite): Remove no longer required autoincrement fix
...
- I installed current master and exported the schema as SQL
- Then I went to this branch, removed the content of the run() method (so made it no-op)
- I installed again and exported the schema as SQL
- The files are exactly the same, so whatever we tried to fix was fixed since 2015 in doctrine dbal
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-10-06 15:29:25 +07:00
Carl Schwan
e966cfbc4b
Cleanup plsam issues in DB/ContactsManager and Console
...
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2023-09-05 09:20:26 +07:00