From a7606649492001e1c95d2e58baf851b003a90794 Mon Sep 17 00:00:00 2001 From: Mikhail Gromov Date: Tue, 13 Nov 2018 16:15:23 +0700 Subject: [PATCH] EUREKA-1154 Return 404 if instance is not found when trying to update metadata via REST API --- .../com/netflix/eureka/resources/InstanceResource.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eureka-core/src/main/java/com/netflix/eureka/resources/InstanceResource.java b/eureka-core/src/main/java/com/netflix/eureka/resources/InstanceResource.java index c4e8d6ffe9..d9c4254972 100644 --- a/eureka-core/src/main/java/com/netflix/eureka/resources/InstanceResource.java +++ b/eureka-core/src/main/java/com/netflix/eureka/resources/InstanceResource.java @@ -118,7 +118,7 @@ public Response renewLease( } // Check if we need to sync based on dirty time stamp, the client // instance might have changed some value - Response response = null; + Response response; if (lastDirtyTimestamp != null && serverConfig.shouldSyncWhenTimestampDiffers()) { response = this.validateDirtyTimestamp(Long.valueOf(lastDirtyTimestamp), isFromReplicaNode); // Store the overridden status since the validation found out the node that replicates wins @@ -239,15 +239,15 @@ public Response updateMetadata(@Context UriInfo uriInfo) { InstanceInfo instanceInfo = registry.getInstanceByAppAndId(app.getName(), id); // ReplicationInstance information is not found, generate an error if (instanceInfo == null) { - logger.error("Cannot find instance while updating metadata for instance {}", id); - return Response.serverError().build(); + logger.warn("Cannot find instance while updating metadata for instance {}/{}", app.getName(), id); + return Response.status(Status.NOT_FOUND).build(); } MultivaluedMap queryParams = uriInfo.getQueryParameters(); Set>> entrySet = queryParams.entrySet(); Map metadataMap = instanceInfo.getMetadata(); // Metadata map is empty - create a new map if (Collections.emptyMap().getClass().equals(metadataMap.getClass())) { - metadataMap = new ConcurrentHashMap(); + metadataMap = new ConcurrentHashMap<>(); InstanceInfo.Builder builder = new InstanceInfo.Builder(instanceInfo); builder.setMetadata(metadataMap); instanceInfo = builder.build();