4545import com .alibaba .nacos .naming .core .v2 .client .impl .IpPortBasedClient ;
4646import com .alibaba .nacos .naming .core .v2 .client .manager .impl .PersistentIpPortClientManager ;
4747import com .alibaba .nacos .naming .core .v2 .event .client .ClientOperationEvent ;
48+ import com .alibaba .nacos .naming .core .v2 .event .metadata .MetadataEvent ;
4849import com .alibaba .nacos .naming .core .v2 .pojo .InstancePublishInfo ;
4950import com .alibaba .nacos .naming .core .v2 .pojo .Service ;
5051import com .alibaba .nacos .naming .core .v2 .service .ClientOperationService ;
@@ -223,8 +224,8 @@ public Response onApply(WriteRequest request) {
223224 }
224225
225226 private boolean instanceAndServiceExist (InstanceStoreRequest instanceRequest ) {
226- return clientManager .contains (instanceRequest .getClientId ()) && clientManager
227- . getClient ( instanceRequest .getClientId ()).getAllPublishedService ().contains (instanceRequest .service );
227+ return clientManager .contains (instanceRequest .getClientId ()) && clientManager . getClient (
228+ instanceRequest .getClientId ()).getAllPublishedService ().contains (instanceRequest .service );
228229 }
229230
230231 private void onInstanceRegister (Service service , Instance instance , String clientId ) {
@@ -237,6 +238,8 @@ private void onInstanceRegister(Service service, Instance instance, String clien
237238 client .addServiceInstance (singleton , instancePublishInfo );
238239 client .setLastUpdatedTime ();
239240 NotifyCenter .publishEvent (new ClientOperationEvent .ClientRegisterServiceEvent (singleton , clientId ));
241+ NotifyCenter .publishEvent (
242+ new MetadataEvent .InstanceMetadataEvent (singleton , instancePublishInfo .getMetadataId (), false ));
240243 }
241244
242245 private void onInstanceDeregister (Service service , String clientId ) {
@@ -246,12 +249,16 @@ private void onInstanceDeregister(Service service, String clientId) {
246249 Loggers .RAFT .warn ("client not exist onInstanceDeregister, clientId : {} " , clientId );
247250 return ;
248251 }
249- client .removeServiceInstance (singleton );
252+ final InstancePublishInfo removedInstance = client .removeServiceInstance (singleton );
250253 client .setLastUpdatedTime ();
251254 if (client .getAllPublishedService ().isEmpty ()) {
252255 clientManager .clientDisconnected (clientId );
253256 }
254257 NotifyCenter .publishEvent (new ClientOperationEvent .ClientDeregisterServiceEvent (singleton , clientId ));
258+ if (null != removedInstance ) {
259+ NotifyCenter .publishEvent (
260+ new MetadataEvent .InstanceMetadataEvent (singleton , removedInstance .getMetadataId (), true ));
261+ }
255262 }
256263
257264 @ Override
@@ -333,8 +340,8 @@ protected boolean readSnapshot(Reader reader) throws Exception {
333340 final Checksum checksum = new CRC64 ();
334341 byte [] snapshotBytes = DiskUtils .decompress (sourceFile , checksum );
335342 LocalFileMeta fileMeta = reader .getFileMeta (SNAPSHOT_ARCHIVE );
336- if (fileMeta .getFileMeta ().containsKey (CHECK_SUM_KEY ) && !Objects
337- . equals ( Long .toHexString (checksum .getValue ()), fileMeta .get (CHECK_SUM_KEY ))) {
343+ if (fileMeta .getFileMeta ().containsKey (CHECK_SUM_KEY ) && !Objects . equals (
344+ Long .toHexString (checksum .getValue ()), fileMeta .get (CHECK_SUM_KEY ))) {
338345 throw new IllegalArgumentException ("Snapshot checksum failed" );
339346 }
340347 loadSnapshot (snapshotBytes );
@@ -368,7 +375,7 @@ protected void loadSnapshot(byte[] snapshotBytes) {
368375 // remove dead client
369376 removeDeadClient (newData .keySet (), oldClientIds );
370377 }
371-
378+
372379 /**
373380 * update instance info for client.
374381 *
@@ -399,13 +406,15 @@ private void updateSyncDataToClient(Map.Entry<String, ClientSyncData> entry, IpP
399406 InstancePublishInfo oldInstanceInfo = client .getInstancePublishInfo (singleton );
400407 if (oldInstanceInfo != null && !newInstanceInfo .equals (oldInstanceInfo )) {
401408 client .putServiceInstance (singleton , newInstanceInfo );
402- NotifyCenter .publishEvent (new ClientOperationEvent .ClientRegisterServiceEvent (singleton , client .getClientId ()));
409+ NotifyCenter .publishEvent (
410+ new ClientOperationEvent .ClientRegisterServiceEvent (singleton , client .getClientId ()));
403411 Loggers .RAFT .info ("[SNAPSHOT-DATA-UPDATE] service={}, instance={}" , service , newInstanceInfo );
404412 }
405413 } else {
406414 // add
407415 client .putServiceInstance (singleton , newInstanceInfo );
408- NotifyCenter .publishEvent (new ClientOperationEvent .ClientRegisterServiceEvent (singleton , client .getClientId ()));
416+ NotifyCenter .publishEvent (
417+ new ClientOperationEvent .ClientRegisterServiceEvent (singleton , client .getClientId ()));
409418 Loggers .RAFT .info ("[SNAPSHOT-DATA-ADD] service={}, instance={}" , service , newInstanceInfo );
410419 }
411420 }
@@ -415,12 +424,13 @@ private void updateSyncDataToClient(Map.Entry<String, ClientSyncData> entry, IpP
415424 InstancePublishInfo oldInfo = client .getInstancePublishInfo (service );
416425 // metric ip count decrement
417426 client .removeServiceInstance (service );
418- NotifyCenter .publishEvent (new ClientOperationEvent .ClientDeregisterServiceEvent (service , client .getClientId ()));
427+ NotifyCenter .publishEvent (
428+ new ClientOperationEvent .ClientDeregisterServiceEvent (service , client .getClientId ()));
419429 Loggers .RAFT .info ("[SNAPSHOT-DATA-REMOVE] service={}, instance={}" , service , oldInfo );
420430 }
421431 }
422432 }
423-
433+
424434 /**
425435 * remove certain client which has dead.
426436 *
@@ -444,7 +454,9 @@ private void removeDeadClient(Collection<String> aliveClientIds, Collection<Stri
444454 InstancePublishInfo oldInfo = client .getInstancePublishInfo (service );
445455 // metric ip count decrement
446456 client .removeServiceInstance (service );
447- NotifyCenter .publishEvent (new ClientOperationEvent .ClientDeregisterServiceEvent (singleton , client .getClientId ()));
457+ NotifyCenter .publishEvent (
458+ new ClientOperationEvent .ClientDeregisterServiceEvent (singleton ,
459+ client .getClientId ()));
448460 Loggers .RAFT .info ("[SNAPSHOT-DATA-REMOVE] service={}, instance={}" , singleton , oldInfo );
449461 }
450462 }
0 commit comments