Reputation: 36984
I have following method:
@Timed(value = "my.request.timer", percentiles = {0.5, 0.95}, histogram = true)
public ResponseEntity<MyResponseDto> executeHttpCall(MyReq myReq) {
log.warn("!!!!! REAL METHOD!!!! for {}", myReq);
Mono<ResponseEntity<MyResponseDto>> responseEntityMono = webClient.post()
.bodyValue(myReq)
.retrieve()
.toEntity(MyResponseDto.class);
try {
return responseEntityMono.block();
} catch (Exception e) {
log.warn("EXCEPTION: ", e);
}
return null;
}
I wanted to add hystrix for that method so I got following:
@HystrixCommand(fallbackMethod = "nullResponse",
threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "1000"),
@HystrixProperty(name = "maxQueueSize", value = "7777"),
})
@Timed(value = "my.request.timer", percentiles = {0.5, 0.95}, histogram = true)
public ResponseEntity<MyResponseDto> executeHttpCall(MyReq myReq) {
log.warn("!!!!! REAL METHOD!!!! for {}", myReq);
Mono<ResponseEntity<MyResponseDto>> responseEntityMono = webClient.post()
.bodyValue(myReq)
.retrieve()
.toEntity(myResponseDto.class);
try {
return responseEntityMono.block();
} catch (Exception e) {
log.warn("EXCEPTION: ", e);
}
return null;
}
public ResponseEntity<MyResponseDto> nullResponse(MyReq myReq) {
log.warn("Fallback method invoked for {}", myReq);
fallbackMethodIvocationCount.increment();
return null;
}
It became a reason of error(it sometimes reproduces and sometimes - not)
2019-11-11 17:33:51.954 WARN 2996 --- [ConnectorImpl-9] b.m.a.p.MyDetectorAPIConnectorImpl : EXCEPTION:
2019-11-11 17:33:51.954 WARN 2996 --- [ConnectorImpl-9] b.m.a.p.MyDetectorAPIConnectorImpl : EXCEPTION:
reactor.core.Exceptions$ReactiveException: java.lang.InterruptedException
at reactor.core.Exceptions.propagate(Exceptions.java:336)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:85)
at reactor.core.publisher.Mono.block(Mono.java:1663)
at my.MyService.executeHttpCall(MyDetectorAPIConnectorImpl.java:89)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
What can be reason of this issue and how to fix it ?
Upvotes: 1
Views: 4332
Reputation: 36984
It was because of hystrix default timeout. It is possible to disable this timeout to use following property:
hystrix.command.default.execution.timeout.enabled: false
Upvotes: 2