@Override protected String getValue(InstanceInfo data) { return data.getId(); } }
@Override public String call(InstanceInfo instanceInfo) { return instanceInfo.getId(); } })
@Override public void call(InstanceInfo instanceInfo) { logger.info("Instance {} listening for shutdown on port {}", instanceInfo.getId(), getShutdownPort()); } }).subscribe(new NoOpSubscriber<>()); // logging only, so ignore errors by using a no-op subscriber
private void evict() { if (!replicationLoop) { logger.info("Replication channel disconnected; putting all registrations from the channel in the eviction queue"); for (InstanceInfo instanceInfo : instanceInfoById.values()) { logger.info("Replication channel disconnected; adding instance {} to the eviction queue", instanceInfo.getId()); evictionQueue.add(instanceInfo, replicationSource); } } } });
@Override public void call(Throwable throwable) { failedReplicationItems.add(new ReplicationItem(instanceInfo.getId(), ReplicationItem.Type.Register)); } });
@Override public void call(ChangeNotification<InstanceInfo> changeNotification) { final ChangeNotification.Kind notificationKind = changeNotification.getKind(); final InstanceInfo instInfo = changeNotification.getData(); if (notificationKind == ChangeNotification.Kind.Add || notificationKind == ChangeNotification.Kind.Modify) { registryCache.put(instInfo.getId(), instInfo); } else if (notificationKind == ChangeNotification.Kind.Delete) { registryCache.remove(instInfo.getId()); } } });
@Override public void call() { replicationItems.add(new ReplicationItem(instanceInfo.getId(), ReplicationItem.Type.Register)); } })
@Override public Observable<com.netflix.appinfo.InstanceInfo> call(LinkedHashSet<InstanceInfo> latestSnapshot) { if (latestSnapshot.isEmpty()) { return Observable.empty(); } InstanceInfo instanceInfo = latestSnapshot.iterator().next(); if (latestSnapshot.size() > 1) { logger.error("Data consistency issue; two instances found with the same instance id {}", instanceInfo.getId()); } return Observable.just(toEureka1xInstanceInfo(latestSnapshot.iterator().next())); } });
@Override public Observable<ReplicationHelloReply> call(InstanceInfo instanceInfo) { replicationLoop = instanceInfo.getId().equals(hello.getSourceId()); ReplicationHelloReply reply = new ReplicationHelloReply(instanceInfo.getId(), false); sendOnTransport(reply); moveToState(STATE.Handshake, STATE.Connected); return Observable.just(reply); } });
@Override protected void addNotification(ChangeNotification<InstanceInfo> notification) { String id = notification.getData().getId(); ChangeNotification<InstanceInfo> current = notificationMap.get(id); ChangeNotification<InstanceInfo> updated = processNext(current, notification); if (updated != null) { notificationMap.put(id, updated); } else if (current != null) { notificationMap.remove(id); } }
@Override public void call() { logger.info("Successfully evicted registry entry {}/{}", evictionItem.getSource(), evictionItem.getInstanceInfo().getId()); } })
private Service addServiceOf(Application application) { Service service = Service.createServiceOf(serverId, application, dataCenterInfoGenerator); services.put(service.getSelfInfo().getId(), service); return service; }
Builder newBuilder() { return new Builder() .withId(this.baseInstanceInfo.getId()); } }
public InstanceInfoInitStateHolder(Iterator<ChangeNotification<InstanceInfo>> initialRegistry, Interest<InstanceInfo> interest) { super(PauseableSubject.<ChangeNotification<InstanceInfo>>create()); this.bufferStartNotification = new StreamStateNotification<>(BufferState.BufferStart, interest); this.bufferEndNotification = new StreamStateNotification<>(BufferState.BufferEnd, interest); notificationMap = new ConcurrentHashMap<>(); while (initialRegistry.hasNext()) { ChangeNotification<InstanceInfo> next = initialRegistry.next(); notificationMap.put(next.getData().getId(), next); // Always Kind.Add } }
@Override public Interest<InstanceInfo> build() { return Interests.forInstances(SampleInstanceInfo.ZuulServer.build().getId()); } },
@Override public Interest<InstanceInfo> build() { return Interests.forInstances(SampleInstanceInfo.DiscoveryServer.build().getId()); } },
private static String extractInstanceId(InstanceInfo instanceInfo) { if (instanceInfo != null && instanceInfo.getDataCenterInfo() != null && AwsDataCenterInfo.class.isAssignableFrom(instanceInfo.getDataCenterInfo().getClass())) { final AwsDataCenterInfo dataCenterInfo = (AwsDataCenterInfo) instanceInfo.getDataCenterInfo(); return dataCenterInfo.getInstanceId(); } return instanceInfo.getId(); }
/** * For a given instance, generate another instance belonging to the same application, * and having the same dependency profile. The actual concrete dependency list is * reconstructed, so might be different. */ public InstanceInfo replacementFor(InstanceInfo terminated) { Application application = services.get(terminated.getId()).getApplication(); removeService(terminated); return addServiceOf(application).getSelfInfo(); }
@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); }