tartarus created FLINK-18663:
--------------------------------

             Summary: Fix Flink On YARN AM not exit
                 Key: FLINK-18663
                 URL: https://issues.apache.org/jira/browse/FLINK-18663
             Project: Flink
          Issue Type: Bug
          Components: Runtime / REST
    Affects Versions: 1.11.0, 1.10.1, 1.10.0
            Reporter: tartarus


AbstractHandler throw NPE cause by FlinkHttpObjectAggregator is null

when rest throw exception, it will do this code
{code:java}
private CompletableFuture<Void> handleException(Throwable throwable, 
ChannelHandlerContext ctx, HttpRequest httpRequest) {
        FlinkHttpObjectAggregator flinkHttpObjectAggregator = 
ctx.pipeline().get(FlinkHttpObjectAggregator.class);
        int maxLength = flinkHttpObjectAggregator.maxContentLength() - 
OTHER_RESP_PAYLOAD_OVERHEAD;
        if (throwable instanceof RestHandlerException) {
                RestHandlerException rhe = (RestHandlerException) throwable;
                String stackTrace = ExceptionUtils.stringifyException(rhe);
                String truncatedStackTrace = Ascii.truncate(stackTrace, 
maxLength, "...");
                if (log.isDebugEnabled()) {
                        log.error("Exception occurred in REST handler.", rhe);
                } else {
                        log.error("Exception occurred in REST handler: {}", 
rhe.getMessage());
                }
                return HandlerUtils.sendErrorResponse(
                        ctx,
                        httpRequest,
                        new ErrorResponseBody(truncatedStackTrace),
                        rhe.getHttpResponseStatus(),
                        responseHeaders);
        } else {
                log.error("Unhandled exception.", throwable);
                String stackTrace = String.format("<Exception on server 
side:%n%s%nEnd of exception on server side>",
                        ExceptionUtils.stringifyException(throwable));
                String truncatedStackTrace = Ascii.truncate(stackTrace, 
maxLength, "...");
                return HandlerUtils.sendErrorResponse(
                        ctx,
                        httpRequest,
                        new ErrorResponseBody(Arrays.asList("Internal server 
error.", truncatedStackTrace)),
                        HttpResponseStatus.INTERNAL_SERVER_ERROR,
                        responseHeaders);
        }
}
{code}
but flinkHttpObjectAggregator some case is null,so this will throw NPE,but this 
method called by  AbstractHandler#respondAsLeader
{code:java}
requestProcessingFuture
        .whenComplete((Void ignored, Throwable throwable) -> {
                if (throwable != null) {
                        
handleException(ExceptionUtils.stripCompletionException(throwable), ctx, 
httpRequest)
                                .whenComplete((Void ignored2, Throwable 
throwable2) -> finalizeRequestProcessing(finalUploadedFiles));
                } else {
                        finalizeRequestProcessing(finalUploadedFiles);
                }
        });
{code}
 the result is InFlightRequestTracker Cannot be cleared.

so the CompletableFuture does‘t complete that handler's closeAsync returned

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to