zitadel/internal/eventstore/repository/sql
Tim Möhlmann d4389ab359
feat(eventstore): add row locking option (#8939)
# Which Problems Are Solved

We need a reliable way to lock events that are being processed as part
of a job queue. For example in the notification handlers.

# How the Problems Are Solved

Allow setting `FOR UPDATE [ NOWAIT | SKIP LOCKED ]` to the eventstore
query builder using an open transaction.

- NOWAIT returns an errors if the lock cannot be obtained
- SKIP LOCKED only returns row which are not locked.
- Default is to wait for the lock to be released.

# Additional Changes

- none

# Additional Context

- [Locking
docs](https://www.postgresql.org/docs/17/sql-select.html#SQL-FOR-UPDATE-SHARE)
- Related to https://github.com/zitadel/zitadel/issues/8931
2024-11-21 14:46:30 +00:00
..
crdb_test.go fix(eventstore): revert precise decimal (#8527) (#8679) 2024-09-24 18:43:29 +02:00
crdb.go fix(eventstore): set application name during push to instance id (#8918) 2024-11-18 15:30:12 +00:00
local_crdb_test.go fix(init): add setting to enable durable locks on crdb (#7982) 2024-05-27 09:03:34 +00:00
query_test.go feat(eventstore): add row locking option (#8939) 2024-11-21 14:46:30 +00:00
query.go feat(eventstore): add row locking option (#8939) 2024-11-21 14:46:30 +00:00