@Override public List<ServiceDescriptor> selectAllServices() { ServiceDescriptors serviceDescriptors = this.serviceDescriptors.get(); if (serviceDescriptors == null) { return ImmutableList.of(); } return serviceDescriptors.getServiceDescriptors(); }
@Override public void onSuccess(ServiceDescriptors newDescriptors) { serviceDescriptors.set(newDescriptors); errorBackOff.success(); Duration delay = newDescriptors.getMaxAge(); if (delay == null) { delay = DEFAULT_DELAY; } scheduleRefresh(delay); }
private void assertAnnounced(ServiceAnnouncement... serviceAnnouncements) { Future<ServiceDescriptors> future = discoveryClient.getServices(serviceType.value(), "pool"); ServiceDescriptors serviceDescriptors = getFutureValue(future, DiscoveryException.class); assertEquals(serviceDescriptors.getType(), serviceType.value()); assertEquals(serviceDescriptors.getPool(), "pool"); assertNotNull(serviceDescriptors.getETag()); assertEquals(serviceDescriptors.getMaxAge(), MAX_AGE); List<ServiceDescriptor> descriptors = serviceDescriptors.getServiceDescriptors(); assertEquals(descriptors.size(), serviceAnnouncements.length); ImmutableMap.Builder<UUID, ServiceDescriptor> builder = ImmutableMap.builder(); for (ServiceDescriptor descriptor : descriptors) { builder.put(descriptor.getId(), descriptor); } Map<UUID, ServiceDescriptor> descriptorMap = builder.build(); for (ServiceAnnouncement serviceAnnouncement : serviceAnnouncements) { ServiceDescriptor serviceDescriptor = descriptorMap.get(serviceAnnouncement.getId()); assertNotNull(serviceDescriptor, "No descriptor for announcement " + serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getType(), serviceType.value()); assertEquals(serviceDescriptor.getPool(), "pool"); assertEquals(serviceDescriptor.getId(), serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getProperties(), serviceAnnouncement.getProperties()); assertEquals(serviceDescriptor.getNodeId(), nodeInfo.getNodeId()); } } }
@Override public ListenableFuture<ServiceDescriptors> getServices(String type) { requireNonNull(type, "type is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } return immediateFuture(new ServiceDescriptors(type, null, builder.build(), maxAge, UUID.randomUUID().toString())); }
private void assertAnnounced(ServiceAnnouncement... serviceAnnouncements) { ServiceDescriptors serviceDescriptors = discoveryClient.getServices(serviceType.value(), "pool").checkedGet(); assertEquals(serviceDescriptors.getType(), serviceType.value()); assertEquals(serviceDescriptors.getPool(), "pool"); assertNotNull(serviceDescriptors.getETag()); assertEquals(serviceDescriptors.getMaxAge(), MAX_AGE); List<ServiceDescriptor> descriptors = serviceDescriptors.getServiceDescriptors(); assertEquals(descriptors.size(), serviceAnnouncements.length); ImmutableMap.Builder<UUID, ServiceDescriptor> builder = ImmutableMap.builder(); for (ServiceDescriptor descriptor : descriptors) { builder.put(descriptor.getId(), descriptor); } Map<UUID, ServiceDescriptor> descriptorMap = builder.build(); for (ServiceAnnouncement serviceAnnouncement : serviceAnnouncements) { ServiceDescriptor serviceDescriptor = descriptorMap.get(serviceAnnouncement.getId()); assertNotNull(serviceDescriptor, "No descriptor for announcement " + serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getType(), serviceType.value()); assertEquals(serviceDescriptor.getPool(), "pool"); assertEquals(serviceDescriptor.getId(), serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getProperties(), serviceAnnouncement.getProperties()); assertEquals(serviceDescriptor.getNodeId(), nodeInfo.getNodeId()); } } }
@Override public CheckedFuture<ServiceDescriptors, DiscoveryException> getServices(String type) { Preconditions.checkNotNull(type, "type is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } return Futures.immediateCheckedFuture(new ServiceDescriptors(type, null, builder.build(), maxAge, UUID.randomUUID().toString())); }
private void assertAnnounced(ServiceAnnouncement... serviceAnnouncements) { Future<ServiceDescriptors> future = discoveryClient.getServices(serviceType.value(), "pool"); ServiceDescriptors serviceDescriptors = getFutureValue(future, DiscoveryException.class); assertEquals(serviceDescriptors.getType(), serviceType.value()); assertEquals(serviceDescriptors.getPool(), "pool"); assertNotNull(serviceDescriptors.getETag()); assertEquals(serviceDescriptors.getMaxAge(), MAX_AGE); List<ServiceDescriptor> descriptors = serviceDescriptors.getServiceDescriptors(); assertEquals(descriptors.size(), serviceAnnouncements.length); ImmutableMap.Builder<UUID, ServiceDescriptor> builder = ImmutableMap.builder(); for (ServiceDescriptor descriptor : descriptors) { builder.put(descriptor.getId(), descriptor); } Map<UUID, ServiceDescriptor> descriptorMap = builder.build(); for (ServiceAnnouncement serviceAnnouncement : serviceAnnouncements) { ServiceDescriptor serviceDescriptor = descriptorMap.get(serviceAnnouncement.getId()); assertNotNull(serviceDescriptor, "No descriptor for announcement " + serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getType(), serviceType.value()); assertEquals(serviceDescriptor.getPool(), "pool"); assertEquals(serviceDescriptor.getId(), serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getProperties(), serviceAnnouncement.getProperties()); assertEquals(serviceDescriptor.getNodeId(), nodeInfo.getNodeId()); } } }
@Override public List<ServiceDescriptor> selectAllServices() { ServiceDescriptors serviceDescriptors = this.serviceDescriptors.get(); if (serviceDescriptors == null) { return ImmutableList.of(); } return serviceDescriptors.getServiceDescriptors(); }
@Override public CheckedFuture<ServiceDescriptors, DiscoveryException> getServices(String type) { Preconditions.checkNotNull(type, "type is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type)) { builder.add(serviceDescriptor); } } return Futures.immediateCheckedFuture(new ServiceDescriptors(type, null, builder.build(), maxAge, UUID.randomUUID().toString())); }
@Override public void onSuccess(ServiceDescriptors newDescriptors) { serviceDescriptors.set(newDescriptors); errorBackOff.success(); Duration delay = newDescriptors.getMaxAge(); if (delay == null) { delay = DEFAULT_DELAY; } scheduleRefresh(delay); }
@Override public CheckedFuture<ServiceDescriptors, DiscoveryException> refreshServices(ServiceDescriptors serviceDescriptors) { Preconditions.checkNotNull(serviceDescriptors, "serviceDescriptors is null"); return lookup(serviceDescriptors.getType(), serviceDescriptors.getPool(), serviceDescriptors); }
@Override public List<ServiceDescriptor> selectAllServices() { ServiceDescriptors serviceDescriptors = this.serviceDescriptors.get(); if (serviceDescriptors == null) { return ImmutableList.of(); } return serviceDescriptors.getServiceDescriptors(); }
@Override public ListenableFuture<ServiceDescriptors> getServices(String type, String pool) { requireNonNull(type, "type is null"); requireNonNull(pool, "pool is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } return immediateFuture(new ServiceDescriptors(type, pool, builder.build(), maxAge, UUID.randomUUID().toString())); }
@Override public void run() { Duration delay = DEFAULT_DELAY; try { ServiceDescriptors newDescriptors = future.checkedGet(); delay = newDescriptors.getMaxAge(); serviceDescriptors.set(newDescriptors); if (serverUp.compareAndSet(false, true)) { log.info("Discovery server connect succeeded for refresh (%s/%s)", type, pool); } } catch (DiscoveryException e) { if (serverUp.compareAndSet(true, false)) { log.error("Cannot connect to discovery server for refresh (%s/%s): %s", type, pool, e.getMessage()); } log.debug(e, "Cannot connect to discovery server for refresh (%s/%s)", type, pool); } finally { scheduleRefresh(delay); } } }, executor);