fix: avoid too many concurrent db queries when cache becomes invalid#699
Merged
icewind1991 merged 2 commits intoMay 18, 2026
Merged
Conversation
In large installations it's more likely to process multiple storage_update events at the same time. When the storage mapping cache becomes invalid each of these events would try to query the database to update the cache. Apart from causing additional load on the database this would also exhaust sqlx's internal connection pool when more event handling threads are running than there are available database connections -- in this case the `Failed to query database: pool timed out while waiting for an open connection` message is logged. This commit changes how the storage mapping cache is updated once it becomes invalid by trying to reduce the chance of multiple threads querying the database at once. Other callers should then still retrieve the old cached mapping during the time the cache is updated. Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
Signed-off-by: Robin Appelman <robin@icewind.nl>
rizlas
pushed a commit
to ConsortiumGARR/notify_push
that referenced
this pull request
May 19, 2026
…-access-when-updating-storagemapping fix: avoid too many concurrent db queries when cache becomes invalid
mwalbeck
pushed a commit
to mwalbeck/docker-nextcloud-notify-push
that referenced
this pull request
Jun 20, 2026
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [nextcloud/notify_push](https://github.com/nextcloud/notify_push) | patch | `v1.3.2` → `v1.3.3` | --- ### Release Notes <details> <summary>nextcloud/notify_push (nextcloud/notify_push)</summary> ### [`v1.3.3`](https://github.com/nextcloud/notify_push/releases/tag/v1.3.3): 1.3.3 [Compare Source](nextcloud/notify_push@v1.3.2...v1.3.3) #### What's Changed - fix: fix noticition deprecation warning by [@​icewind1991](https://github.com/icewind1991) in [#​705](nextcloud/notify_push#705) - Bind to ipv6 dual stack by default by [@​icewind1991](https://github.com/icewind1991) in [#​687](nextcloud/notify_push#687) - fix: avoid too many concurrent db queries when cache becomes invalid by [@​nilsding](https://github.com/nilsding) in [#​699](nextcloud/notify_push#699) #### New Contributors - [@​nilsding](https://github.com/nilsding) made their first contribution in [#​699](nextcloud/notify_push#699) **Full Changelog**: <nextcloud/notify_push@v1.3.2...v1.3.3> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzAuMTkiLCJ1cGRhdGVkSW5WZXIiOiI0My4xNzAuMTkiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> Reviewed-on: https://git.walbeck.it/walbeck-it/docker-nextcloud-notify-push/pulls/218
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In large installations it's more likely that multiple storage_update events are processed at the same time. When the storage mapping cache becomes invalid each of these events would try to query the database to update the cache.
Apart from causing additional load on the database this would also exhaust sqlx's internal connection pool when more event handling threads are running than there are available database connections -- in this case the
Failed to query database: pool timed out while waiting for an open connectionmessage is logged.This PR changes how the storage mapping cache is updated once it becomes invalid by trying to reduce the chance of multiple threads querying the database at once. Other callers should then still retrieve the old cached mapping during the time the cache is updated.