Skip to content

Commit 98a300f

Browse files
feat:add deadline to grpc request. (#593)
1 parent cb08e17 commit 98a300f

File tree

4 files changed

+27
-7
lines changed
  • polaris-common/polaris-client/src/main/java/com/tencent/polaris/client/api
  • polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow
  • polaris-plugins
    • polaris-plugin-api/src/main/java/com/tencent/polaris/api/plugin/server
    • polaris-plugins-connector/connector-polaris-grpc/src/main/java/com/tencent/polaris/plugins/connector/grpc

4 files changed

+27
-7
lines changed

polaris-common/polaris-client/src/main/java/com/tencent/polaris/client/api/SDKContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ private void reportClient(Extensions extensions) {
376376
}
377377
}
378378
reportClientRequest.setReporterMetaInfos(reporterMetaInfos);
379+
reportClientRequest.setTimeoutMs(extensions.getConfiguration().getGlobal().getAPI().getTimeout());
379380

380381
try {
381382
ReportClientResponse reportClientResponse = serverConnector.reportClient(reportClientRequest);

polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow/DefaultDiscoveryFlow.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ private InstanceRegisterResponse doRegister(InstanceRegisterRequest req, Map<Str
147147
long start = System.currentTimeMillis();
148148
ServiceCallResult serviceCallResult = new ServiceCallResult();
149149
CommonProviderRequest request = req.getRequest();
150+
request.setTimeoutMs(timeout);
150151
try {
151152
CommonProviderResponse response = serverConnector.registerInstance(request, customHeader);
152153
LOG.info("register {}/{} instance {} successfully", req.getNamespace(), req.getService(),
@@ -183,6 +184,7 @@ public void deRegister(InstanceDeregisterRequest req) {
183184
long start = System.currentTimeMillis();
184185
ServiceCallResult serviceCallResult = new ServiceCallResult();
185186
CommonProviderRequest request = req.getRequest();
187+
request.setTimeoutMs(timeout);
186188
try {
187189
serverConnector.deregisterInstance(request);
188190
serviceCallResult.setRetStatus(RetStatus.RetSuccess);
@@ -250,6 +252,7 @@ public ReportServiceContractResponse reportServiceContract(ReportServiceContract
250252
while (timeout > 0) {
251253
long start = System.currentTimeMillis();
252254
ServiceCallResult serviceCallResult = new ServiceCallResult();
255+
req.setTimeoutMs(timeout);
253256
try {
254257
ReportServiceContractResponse response = serverConnector.reportServiceContract(req);
255258
serviceCallResult.setRetStatus(RetStatus.RetSuccess);
@@ -286,6 +289,7 @@ public ServiceRuleResponse getServiceContract(GetServiceContractRequest req) {
286289
CommonServiceContractRequest request = req.getRequest();
287290
request.setNamespace(req.getNamespace());
288291
request.setService(req.getService());
292+
request.setTimeoutMs(timeout);
289293
try {
290294
ServiceRuleByProto response = serverConnector.getServiceContract(request);
291295
serviceCallResult.setRetStatus(RetStatus.RetSuccess);

polaris-plugins/polaris-plugin-api/src/main/java/com/tencent/polaris/api/plugin/server/ReportClientRequest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class ReportClientRequest {
3939

4040
private TargetServer targetServer;
4141

42+
private long timeoutMs;
43+
4244
private List<ReporterMetaInfo> reporterMetaInfos;
4345

4446
public List<ReporterMetaInfo> getReporterMetaInfos() {
@@ -89,6 +91,14 @@ public void setTargetServer(TargetServer targetServer) {
8991
this.targetServer = targetServer;
9092
}
9193

94+
public long getTimeoutMs() {
95+
return timeoutMs;
96+
}
97+
98+
public void setTimeoutMs(long timeoutMs) {
99+
this.timeoutMs = timeoutMs;
100+
}
101+
92102
@Override
93103
public String toString() {
94104
return "ReportClientRequest{" +
@@ -97,6 +107,8 @@ public String toString() {
97107
", clientHost='" + clientHost + '\'' +
98108
", version='" + version + '\'' +
99109
", targetServer=" + targetServer +
110+
", timeoutMs=" + timeoutMs +
111+
", reporterMetaInfos=" + reporterMetaInfos +
100112
'}';
101113
}
102114
}

polaris-plugins/polaris-plugins-connector/connector-polaris-grpc/src/main/java/com/tencent/polaris/plugins/connector/grpc/GrpcConnector.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,8 @@ public CommonProviderResponse registerInstance(CommonProviderRequest req, Map<St
309309
stub = GrpcUtil.attachRequestHeader(stub, GrpcUtil.nextInstanceRegisterReqId());
310310
stub = GrpcUtil.attachRequestHeader(stub, customHeader);
311311
stub = GrpcUtil.attachAccessToken(connectorConfig.getToken(), stub);
312-
ResponseProto.Response registerInstanceResponse = stub.registerInstance(buildRegisterInstanceRequest(req));
312+
ResponseProto.Response registerInstanceResponse = stub.withDeadlineAfter(req.getTimeoutMs(),
313+
TimeUnit.MILLISECONDS).registerInstance(buildRegisterInstanceRequest(req));
313314
GrpcUtil.checkResponse(registerInstanceResponse);
314315
if (!registerInstanceResponse.hasInstance()) {
315316
throw new PolarisException(ErrorCode.SERVER_USER_ERROR,
@@ -470,8 +471,8 @@ public void deregisterInstance(CommonProviderRequest req) throws PolarisExceptio
470471
PolarisGRPCGrpc.PolarisGRPCBlockingStub stub = PolarisGRPCGrpc.newBlockingStub(connection.getChannel());
471472
stub = GrpcUtil.attachRequestHeader(stub, GrpcUtil.nextInstanceDeRegisterReqId());
472473
stub = GrpcUtil.attachAccessToken(connectorConfig.getToken(), stub);
473-
ResponseProto.Response deregisterInstanceResponse = stub
474-
.deregisterInstance(buildDeregisterInstanceRequest(req));
474+
ResponseProto.Response deregisterInstanceResponse = stub.withDeadlineAfter(req.getTimeoutMs(),
475+
TimeUnit.MILLISECONDS).deregisterInstance(buildDeregisterInstanceRequest(req));
475476
GrpcUtil.checkResponse(deregisterInstanceResponse);
476477
LOG.debug("received deregister response {}", deregisterInstanceResponse);
477478
} catch (Throwable t) {
@@ -551,7 +552,8 @@ public ReportClientResponse reportClient(ReportClientRequest req) throws Polaris
551552
stub = GrpcUtil.attachRequestHeader(stub, GrpcUtil.nextHeartbeatReqId());
552553
stub = GrpcUtil.attachAccessToken(connectorConfig.getToken(), stub);
553554
ClientProto.Client request = buildReportRequest(req);
554-
ResponseProto.Response response = stub.reportClient(request);
555+
ResponseProto.Response response = stub.withDeadlineAfter(req.getTimeoutMs(),
556+
TimeUnit.MILLISECONDS).reportClient(request);
555557
LOG.debug("reportClient req:{}, rsp:{}", req, TextFormat.shortDebugString(response));
556558
GrpcUtil.checkResponse(response);
557559
ReportClientResponse rsp = new ReportClientResponse();
@@ -625,8 +627,8 @@ public ReportServiceContractResponse reportServiceContract(ReportServiceContract
625627
PolarisServiceContractGRPCGrpc.newBlockingStub(connection.getChannel());
626628
stub = GrpcUtil.attachRequestHeader(stub, GrpcUtil.nextReportServiceContractReqId());
627629
stub = GrpcUtil.attachAccessToken(connectorConfig.getToken(), stub);
628-
ResponseProto.Response reportServiceContractResponse =
629-
stub.reportServiceContract(buildReportServiceContractRequest(req));
630+
ResponseProto.Response reportServiceContractResponse = stub.withDeadlineAfter(req.getTimeoutMs(),
631+
TimeUnit.MILLISECONDS).reportServiceContract(buildReportServiceContractRequest(req));
630632
GrpcUtil.checkResponse(reportServiceContractResponse);
631633
return new ReportServiceContractResponse();
632634
} catch (Throwable t) {
@@ -663,7 +665,8 @@ public ServiceRuleByProto getServiceContract(CommonServiceContractRequest req) t
663665
PolarisServiceContractGRPCGrpc.newBlockingStub(connection.getChannel());
664666
stub = GrpcUtil.attachRequestHeader(stub, GrpcUtil.nextReportServiceContractReqId());
665667
stub = GrpcUtil.attachAccessToken(connectorConfig.getToken(), stub);
666-
ResponseProto.Response response = stub.getServiceContract(req.toQuerySpec());
668+
ResponseProto.Response response = stub.withDeadlineAfter(req.getTimeoutMs(),
669+
TimeUnit.MILLISECONDS).getServiceContract(req.toQuerySpec());
667670
GrpcUtil.checkResponse(response);
668671
ServiceContractProto.ServiceContract remoteVal = response.getServiceContract();
669672
return new ServiceRuleByProto(remoteVal, remoteVal.getRevision(), false, EventType.SERVICE_CONTRACT);

0 commit comments

Comments
 (0)