Open OrezzerO opened 5 years ago
All method are invoked by PathChildrenCacheListener.childEvent
, which will be invoke by a single thread with event order. You can debug it or print a thread id to find that.
RegistryDataCache
is not thread safe, yes, but it is used in a thread safe case.
Got it. ZooKeeper watches are single threaded. https://cwiki.apache.org/confluence/display/CURATOR/TN1
So ,it is unnecessary to use ConcurrentHashMap?
Although it is written by one and read by others, it is better to be thread safe in my opinion. A better practice is using Map.compute
or Map.computeIfAbsent
rather than multi changes above.
See sofa-dashboard-client for more details.
The way we use ConcurrentHashMap may be not correct. For example:
Sometimes
put()
method may be invoked twice, it is not we expected.