From c3d8372fe590207d5cb2cb0ed48e8ba9904f27a9 Mon Sep 17 00:00:00 2001 From: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> Date: Mon, 30 Jun 2025 16:16:54 +0800 Subject: [PATCH 1/2] Fix serviceConfig within scope of copy Signed-off-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> --- .../grpc/autoconfigure/client/GrpcClientProperties.java | 6 ++++-- .../autoconfigure/client/GrpcClientPropertiesTests.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java index 8976308c..7db6d5c3 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java +++ b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java @@ -153,9 +153,9 @@ public Health getHealth() { /** * Map representation of the service config to use for the channel */ - private final Map serviceConfig = new HashMap<>(); + private final Map serviceConfig = new HashMap<>(); - public Map getServiceConfig() { + public Map getServiceConfig() { return this.serviceConfig; } @@ -349,6 +349,8 @@ public ChannelConfig copy() { copy.defaultDeadline = this.defaultDeadline; copy.health.copyValuesFrom(this.getHealth()); copy.ssl.copyValuesFrom(this.getSsl()); + copy.serviceConfig.clear(); + copy.serviceConfig.putAll(this.serviceConfig); return copy; } diff --git a/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/client/GrpcClientPropertiesTests.java b/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/client/GrpcClientPropertiesTests.java index 33b0284a..479c2789 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/client/GrpcClientPropertiesTests.java +++ b/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/client/GrpcClientPropertiesTests.java @@ -289,6 +289,7 @@ void copyFromDefaultChannel() { var defaultChannel = properties.getDefaultChannel(); var newChannel = defaultChannel.copy(); assertThat(newChannel).usingRecursiveComparison().isEqualTo(defaultChannel); + assertThat(newChannel.getServiceConfig()).isEqualTo(defaultChannel.getServiceConfig()); } } From a60b5118d6a2c60eed9922674728980fd45f4ca1 Mon Sep 17 00:00:00 2001 From: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> Date: Wed, 2 Jul 2025 10:57:48 +0800 Subject: [PATCH 2/2] Fix serviceConfig within scope of copy (no need to clear first) Signed-off-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> --- .../grpc/autoconfigure/client/GrpcClientProperties.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java index 7db6d5c3..f542df25 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java +++ b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/client/GrpcClientProperties.java @@ -349,7 +349,6 @@ public ChannelConfig copy() { copy.defaultDeadline = this.defaultDeadline; copy.health.copyValuesFrom(this.getHealth()); copy.ssl.copyValuesFrom(this.getSsl()); - copy.serviceConfig.clear(); copy.serviceConfig.putAll(this.serviceConfig); return copy; }