diff --git a/nuntio-platform-docker/src/main/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParser.java b/nuntio-platform-docker/src/main/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParser.java index bd6094d..f827817 100644 --- a/nuntio-platform-docker/src/main/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParser.java +++ b/nuntio-platform-docker/src/main/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParser.java @@ -124,6 +124,9 @@ private Optional findValue(ConfigKind configKind, ServiceBinding service String configKey = "SERVICE" +serviceBinding.getPort().map(port -> "_"+port).orElse("") +configKind.getEnvVarSuffix(); + if(configuration.getOrDefault(configKey, "").isBlank()) { + return Optional.empty(); + } return Optional.ofNullable(configuration.get(configKey)); } diff --git a/nuntio-platform-docker/src/test/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParserTest.java b/nuntio-platform-docker/src/test/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParserTest.java index a32fc09..7d05f41 100644 --- a/nuntio-platform-docker/src/test/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParserTest.java +++ b/nuntio-platform-docker/src/test/java/eu/xenit/nuntio/platform/docker/config/parser/RegistratorCompatibleParserTest.java @@ -283,6 +283,25 @@ public void withHostname() { .build() ), services); } + + @Test + void emptyServiceName() { + var redis = SimpleContainerMetadata.builder() + .imageName("docker.io/progrium/redis") + .environment("SERVICE_NAME", "") + .internalPortBinding(ServiceBinding.fromPort(8000)) + .build(); + + var services = configurationParser.toServiceConfigurations(redis); + + assertEquals(Collections.singleton( + PlatformServiceConfiguration.builder() + .serviceName("redis") + .serviceBinding(ServiceBinding.fromPort(8000)) + .build() + ), services); + + } } @Nested diff --git a/nuntio-registry-consul/src/main/java/eu/xenit/nuntio/registry/consul/ConsulRegistry.java b/nuntio-registry-consul/src/main/java/eu/xenit/nuntio/registry/consul/ConsulRegistry.java index 76917df..5381105 100644 --- a/nuntio-registry-consul/src/main/java/eu/xenit/nuntio/registry/consul/ConsulRegistry.java +++ b/nuntio-registry-consul/src/main/java/eu/xenit/nuntio/registry/consul/ConsulRegistry.java @@ -137,10 +137,13 @@ public void registerCheck(RegistryServiceIdentifier serviceIdentifier, CheckType public void unregisterCheck(RegistryServiceIdentifier serviceIdentifier, CheckType checkType) { if (serviceIdentifier instanceof ConsulServiceIdentifier) { registryMetrics.unregisterCheck(() -> { - log.debug("Deregistering check {}:{}", serviceIdentifier, checkType); - consulClient.agentCheckDeregister(createCheckId((ConsulServiceIdentifier) serviceIdentifier, checkType), - consulConfig.getToken()); - log.debug("Deregistered check {}:{}", serviceIdentifier, checkType); + if(checkExists((ConsulServiceIdentifier) serviceIdentifier, checkType)) { + log.debug("Deregistering check {}:{}", serviceIdentifier, checkType); + consulClient.agentCheckDeregister( + createCheckId((ConsulServiceIdentifier) serviceIdentifier, checkType), + consulConfig.getToken()); + log.debug("Deregistered check {}:{}", serviceIdentifier, checkType); + } }); } @@ -170,4 +173,10 @@ public void updateCheck(RegistryServiceIdentifier serviceIdentifier, CheckType c }); } } + + private boolean checkExists(ConsulServiceIdentifier serviceIdentifier, CheckType checkType) { + String checkId = createCheckId(serviceIdentifier, checkType); + var agentChecks = consulClient.getAgentChecks().getValue(); + return agentChecks.containsKey(checkId); + } }