@Override public Observable<Boolean> unregister(final InstanceInfo instanceInfo, final Source source) { final MultiSourcedDataHolder<InstanceInfo> currentHolder = internalStore.get(instanceInfo.getId()); if (currentHolder == null) { return Observable.just(false); } Observable<MultiSourcedDataHolder.Status> result = currentHolder.remove(source).doOnNext(new Action1<MultiSourcedDataHolder.Status>() { @Override public void call(MultiSourcedDataHolder.Status status) { if (status != MultiSourcedDataHolder.Status.RemoveExpired) { metrics.incrementUnregistrationCounter(source.getOrigin()); } } }); return subscribeToUpdateResult(result); }
@Override public Observable<Boolean> register(final InstanceInfo instanceInfo, final Source source) { MultiSourcedDataHolder<InstanceInfo> holder = new NotifyingInstanceInfoHolder( internalStoreAccessor, pauseableSubject, invoker, instanceInfo.getId()); Observable<MultiSourcedDataHolder.Status> result = holder.update(source, instanceInfo).doOnNext(new Action1<MultiSourcedDataHolder.Status>() { @Override public void call(MultiSourcedDataHolder.Status status) { if (status != MultiSourcedDataHolder.Status.AddExpired) { metrics.incrementRegistrationCounter(source.getOrigin()); } } }); return subscribeToUpdateResult(result); }