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) |
Free forum by Nabble | Edit this page |