mirror of https://github.com/grpc/grpc-java.git
xds: fixed unsupported unsigned 32 bits issue for circuit breaker (#11735)
Added change for circuit breaking by converting signed 32-bit Int to Unsigned 64-bit Long For MaxRequest negative value ( -1) Fixes #11695
This commit is contained in:
parent
8a5f7776db
commit
f8f613984f
|
|
@ -215,7 +215,7 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
|
|||
continue;
|
||||
}
|
||||
if (threshold.hasMaxRequests()) {
|
||||
maxConcurrentRequests = (long) threshold.getMaxRequests().getValue();
|
||||
maxConcurrentRequests = Integer.toUnsignedLong(threshold.getMaxRequests().getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4001,6 +4001,25 @@ public abstract class GrpcXdsClientImplTestBase {
|
|||
client.shutdown();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void circuitBreakingConversionOf32bitIntTo64bitLongForMaxRequestNegativeValue() {
|
||||
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
|
||||
cdsResourceWatcher);
|
||||
Any clusterCircuitBreakers = Any.pack(
|
||||
mf.buildEdsCluster(CDS_RESOURCE, null, "round_robin", null, null, false, null,
|
||||
"envoy.transport_sockets.tls", mf.buildCircuitBreakers(50, -1), null));
|
||||
call.sendResponse(CDS, clusterCircuitBreakers, VERSION_1, "0000");
|
||||
|
||||
// Client sent an ACK CDS request.
|
||||
call.verifyRequest(CDS, CDS_RESOURCE, VERSION_1, "0000", NODE);
|
||||
verify(cdsResourceWatcher).onChanged(cdsUpdateCaptor.capture());
|
||||
CdsUpdate cdsUpdate = cdsUpdateCaptor.getValue();
|
||||
|
||||
assertThat(cdsUpdate.clusterName()).isEqualTo(CDS_RESOURCE);
|
||||
assertThat(cdsUpdate.clusterType()).isEqualTo(ClusterType.EDS);
|
||||
assertThat(cdsUpdate.maxConcurrentRequests()).isEqualTo(4294967295L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendToNonexistentServer() throws Exception {
|
||||
// Setup xdsClient to fail on stream creation
|
||||
|
|
|
|||
Loading…
Reference in New Issue