GH-3272: Add lease renewal for distributed locks
Fixes https://github.com/spring-projects/spring-integration/issues/3272 * Introduce a `RenewableLockRegistry` since not all `LockRegistry` implementations provide a way to renew the lease for the lock * Implement `RenewableLockRegistry` in the `JdbcLockRegistry` * Test and document the feature
This commit is contained in:
committed by
Artem Bilan
parent
381a071287
commit
e2c6e77f2f
@@ -1085,6 +1085,12 @@ If so, you can specify the `id` to be associated with the `DefaultLockRepository
|
||||
Starting with version 5.1.8, the `JdbcLockRegistry` can be configured with the `idleBetweenTries` - a `Duration` to sleep between lock record insert/update executions.
|
||||
By default it is `100` milliseconds and in some environments non-leaders pollute connections with data source too often.
|
||||
|
||||
Starting with version 5.4, the `RenewableLockRegistry` interface has been introduced and added to `JdbcLockRegistry`.
|
||||
The `renewLock()` method must be called during locked process in case of the locked process would be longer than time to live of the lock.
|
||||
So the time to live can be highly reduce and deployments can retake a lost lock quickly.
|
||||
|
||||
NOTE: The lock renewal can be done only if the lock is held by the current thread.
|
||||
|
||||
[[jdbc-metadata-store]]
|
||||
=== JDBC Metadata Store
|
||||
|
||||
|
||||
@@ -30,6 +30,11 @@ See <<./r2dbc.adoc#r2dbc,R2DBC Support>> for more information.
|
||||
The Channel Adapters for Redis Stream support have been introduced.
|
||||
See <<./redis.adoc#redis-stream-outbound,Redis Stream Outbound Channel Adapter>> for more information.
|
||||
|
||||
==== Renewable Lock Registry
|
||||
|
||||
A Renewable lock registry has been introduced to allow renew lease of a distributed lock.
|
||||
See <<./jdbc.adoc#jdbc-lock-registry,JDBC implementation>> for more information.
|
||||
|
||||
[[x5.4-general]]
|
||||
=== General Changes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user