[Improvement-14658][etcd] Distinguish between add and update by using pre kv (#14659)
Co-authored-by: eye <eye.gu@aloudata.com>
This commit is contained in:
parent
d223d654cc
commit
3148dba7a5
|
|
@ -151,7 +151,8 @@ public class EtcdRegistry implements Registry {
|
|||
public boolean subscribe(String path, SubscribeListener listener) {
|
||||
try {
|
||||
ByteSequence watchKey = byteSequence(path);
|
||||
WatchOption watchOption = WatchOption.newBuilder().isPrefix(true).build();
|
||||
WatchOption watchOption =
|
||||
WatchOption.newBuilder().withPrevKV(true).isPrefix(true).build();
|
||||
watcherMap.computeIfAbsent(path,
|
||||
$ -> client.getWatchClient().watch(watchKey, watchOption, watchResponse -> {
|
||||
for (WatchEvent event : watchResponse.getEvents()) {
|
||||
|
|
@ -352,7 +353,11 @@ public class EtcdRegistry implements Registry {
|
|||
|
||||
switch (event.getEventType()) {
|
||||
case PUT:
|
||||
type(Type.ADD);
|
||||
if (event.getPrevKV().getKey().isEmpty()) {
|
||||
type(Type.ADD);
|
||||
} else {
|
||||
type(Type.UPDATE);
|
||||
}
|
||||
break;
|
||||
case DELETE:
|
||||
type(Type.REMOVE);
|
||||
|
|
|
|||
Loading…
Reference in New Issue