keith-turner opened a new issue, #4995:
URL: https://github.com/apache/accumulo/issues/4995
**Is your feature request related to a problem? Please describe.**
When table configuration and system configuration is updated in zookeeper
there is no way to know when all servers in the cluster have seen this update.
This can lead to problems like the following.
1. Table config is updated this could be table iterators, classloader
context, etc
2. Scans are started that access tables where the config update was made
3. Only a subset of the tablet/scan servers have seen the config update
when the scan request comes in.
PR #4990 is a very narrow fix for a single situation.
**Describe the solution you'd like**
Create a new server RPC that allows invalidating specified property caches
(like system or specific tables) if the versions on those are below a certain
level. Would need to consider that the version is an int that can wrap if
doing this.
Unsure of the best way to expose this new server RPC for use. Below are
some possible ways this could be done.
1. Always call this new RPC after setting a property. This could make
something like setting 10 properties in the shell much slower as it would reach
out to all servers after setting each property.
2. Add a new API like `invalidatePropertyCache(Set<ServerId> servers)`
which would work well with the changes in #4851 and could be called after
making many property updates on a subset of servers. This would make an RPC to
each server. However this API does not narrow what caches are cleared, for
example may want to clear a single table. This would need an associated shell
command.
3. Create new property mutation API methods that allow specifying if caches
should be invalidated, possibly on which servers. This would need options on
the shell command to set properties.
Option 3 seems to offer a good balance between correctness and performance.
Option 1 is good for correctness, but could cause performance problems for
existing code. Option 2 seems good for performance, but not correctness.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]