New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ISPN-12177 Persist IRAC version during shutdown #8680
Conversation
c5eaf92
to
e63a257
Compare
Conflicts |
e63a257
to
e204caf
Compare
e204caf
to
4539874
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I see where it loads from the file, but isn't there supposed to be something to read the state from the other site? Or is that handled elsewhere?
And what about if we have data in a store, guessing that is a different PR?
@@ -90,6 +92,7 @@ public String toString() { | |||
"cacheName=" + cacheName + | |||
", segment=" + segment + | |||
", topologyId=" + topologyId + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like topologyId can be removed as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not really. It makes sure the node has at least that topology installed before handling the executing the command.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't it be part of the readFrom
and writeTo
though?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, the previous code was incorrect.
The CacheRpcCommandExternalizer
[1] invokes the ReplicableCommandExternalizer
[2] and the latter sends the topology id.
[1] https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/marshall/exts/CacheRpcCommandExternalizer.java#L142
[2] https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/marshall/exts/ReplicableCommandExternalizer.java#L82
core/src/main/java/org/infinispan/container/versioning/irac/TopologyIracVersion.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/infinispan/container/versioning/irac/TopologyIracVersion.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/infinispan/interceptors/impl/NonTxIracLocalSiteInterceptor.java
Show resolved
Hide resolved
Each node, when a rebalance happends, broadcast its version state to all other nodes (see |
About the cache store, it uses the version in the context to generate a new higher version. Example, for non-tx caches: https://github.com/infinispan/infinispan/pull/8680/files#diff-8f85a96763cdc57d2a36e8a8b873178ab509a3083766c6d2ff9bb56a07a1a2c6R205 this covers "all" scenarios except if you use SKIP_CACHE_LOAD + !preload + !conditional_write |
4539874
to
d3c583b
Compare
updated & rebased |
d3c583b
to
50a3e1c
Compare
fixed test failure |
Integrated into master, thanks @pruivo ! |
yey! thanks @wburns ! |
https://issues.redhat.com/browse/ISPN-12177