From 70902d2351df51975aba94bf8dc8e0f63260a4af Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Mon, 3 Mar 2025 18:23:36 +0800 Subject: [PATCH] [opt](fe) Avoid load `retrying_service_config.json` multi times for class MetaServiceClient (#48487) --- .../doris/cloud/rpc/MetaServiceClient.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java index 904f3ec15d9c6b..9ff832d2630135 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/rpc/MetaServiceClient.java @@ -21,6 +21,7 @@ import org.apache.doris.cloud.proto.MetaServiceGrpc; import org.apache.doris.common.Config; +import com.google.common.base.Preconditions; import com.google.gson.Gson; import com.google.gson.stream.JsonReader; import io.grpc.ConnectivityState; @@ -39,6 +40,7 @@ public class MetaServiceClient { public static final Logger LOG = LogManager.getLogger(MetaServiceClient.class); + private static final Map serviceConfig; private final String address; private final MetaServiceGrpc.MetaServiceFutureStub stub; @@ -50,6 +52,12 @@ public class MetaServiceClient { static { NameResolverRegistry.getDefaultRegistry().register(new MetaServiceListResolverProvider()); + + // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retry-policy-capabilities + serviceConfig = new Gson().fromJson(new JsonReader(new InputStreamReader( + MetaServiceClient.class.getResourceAsStream("/retrying_service_config.json"), + StandardCharsets.UTF_8)), Map.class); + LOG.info("serviceConfig:{}", serviceConfig); } public MetaServiceClient(String address) { @@ -61,10 +69,12 @@ public MetaServiceClient(String address) { if (isMetaServiceEndpointList) { target = MetaServiceListResolverProvider.MS_LIST_SCHEME_PREFIX + address; } + + Preconditions.checkNotNull(serviceConfig, "serviceConfig is null"); channel = NettyChannelBuilder.forTarget(target) .flowControlWindow(Config.grpc_max_message_size_bytes) .maxInboundMessageSize(Config.grpc_max_message_size_bytes) - .defaultServiceConfig(getRetryingServiceConfig()) + .defaultServiceConfig(serviceConfig) .defaultLoadBalancingPolicy("round_robin") .enableRetry() .usePlaintext().build(); @@ -85,15 +95,6 @@ private long connectionAgeExpiredAt() { return Long.MAX_VALUE; } - protected Map getRetryingServiceConfig() { - // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retry-policy-capabilities - Map serviceConfig = new Gson().fromJson(new JsonReader(new InputStreamReader( - MetaServiceClient.class.getResourceAsStream("/retrying_service_config.json"), - StandardCharsets.UTF_8)), Map.class); - LOG.info("serviceConfig:{}", serviceConfig); - return serviceConfig; - } - // Is the connection age has expired? public boolean isConnectionAgeExpired() { return Config.meta_service_connection_age_base_minutes > 0