diff --git a/module/spring-boot-grpc-client/src/main/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfig.java b/module/spring-boot-grpc-client/src/main/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfig.java index c7520906b23..c00b52259f9 100644 --- a/module/spring-boot-grpc-client/src/main/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfig.java +++ b/module/spring-boot-grpc-client/src/main/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfig.java @@ -87,7 +87,8 @@ public record ServiceConfig(@Nullable List loadbalancing, @ } static String durationString(Duration duration) { - return duration.getSeconds() + "." + duration.getNano() + "s"; + return (duration.getNano() == 0) ? "%ds".formatted(duration.getSeconds()) + : "%d.%09ds".formatted(duration.getSeconds(), duration.getNano()); } static String bytesString(DataSize dataSize) { diff --git a/module/spring-boot-grpc-client/src/test/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfigTests.java b/module/spring-boot-grpc-client/src/test/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfigTests.java index dff92d54a9d..ed33d5305ce 100644 --- a/module/spring-boot-grpc-client/src/test/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfigTests.java +++ b/module/spring-boot-grpc-client/src/test/java/org/springframework/boot/grpc/client/autoconfigure/ServiceConfigTests.java @@ -255,7 +255,7 @@ class ServiceConfigTests { method: m-one retry: max-attempts: 2 - initial-backoff: 1m + initial-backoff: 50ms max-backoff: 1h backoff-multiplier: 2.5 per-attempt-receive-timeout: 2s @@ -268,7 +268,7 @@ class ServiceConfigTests { Map serviceMethodMap = getServiceMethodMap(map, true); Object methodInfo = serviceMethodMap.get("s-one/m-one"); assertThat(methodInfo).extracting("retryPolicy.maxAttempts").isEqualTo(2); - assertThat(methodInfo).extracting("retryPolicy.initialBackoffNanos").isEqualTo(Duration.ofMinutes(1).toNanos()); + assertThat(methodInfo).extracting("retryPolicy.initialBackoffNanos").isEqualTo(Duration.ofMillis(50).toNanos()); assertThat(methodInfo).extracting("retryPolicy.maxBackoffNanos").isEqualTo(Duration.ofHours(1).toNanos()); assertThat(methodInfo).extracting("retryPolicy.backoffMultiplier").isEqualTo(2.5); assertThat(methodInfo).extracting("retryPolicy.perAttemptRecvTimeoutNanos")