Add Lifecycle/CRaC support for Cassandra #44505
Closed
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.
Adds a bean that oversees Cassandra's
CqlSession
throughLifecycle
; uponstop()
all connections are forcefully terminated by marking all nodes as forced down, and unmarking these onstart()
. This might not be perfect if there's an ongoing topology change, but for a quiescent state it should be sufficient.In order to support checkpoint
onRefresh
which does not stop beans that haven't been started (see disussion in spring-projects/spring-framework#34510 (comment) ) this registers a CRaC resource that will handle the checkpoint. After properly started the resource is removed left to be garbage-collected; potential interference between lifecycle and CRaC resource methods invocation is handled.I have been trying to mimic
HikariCheckpointRestoreLifecycle
and I have added some tests similar to those inHikariDataSourceConfigurationTests
; I would do the same forHikariCheckpointRestoreLifecycleTests
but I am not sure where these should land, as the:spring-boot
project does not depend onorg.springframework.data:spring-data-cassandra
. Please advise.