Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/6178#discussion_r196455211
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/AbstractHandler.java 
---
    @@ -103,77 +104,74 @@ protected void respondAsLeader(ChannelHandlerContext 
ctx, RoutedRequest routedRe
                                return;
                        }
     
    -                   ByteBuf msgContent = ((FullHttpRequest) 
httpRequest).content();
    +                   final ByteBuf msgContent;
    +                   Optional<byte[]> multipartJsonPayload = 
FileUploadHandler.getMultipartJsonPayload(ctx);
    +                   if (multipartJsonPayload.isPresent()) {
    +                           msgContent = 
Unpooled.wrappedBuffer(multipartJsonPayload.get());
    +                   } else {
    +                           msgContent = ((FullHttpRequest) 
httpRequest).content();
    +                   }
     
    -                   R request;
    -                   if (isFileUpload()) {
    -                           final Path path = 
ctx.channel().attr(FileUploadHandler.UPLOADED_FILE).get();
    -                           if (path == null) {
    -                                   HandlerUtils.sendErrorResponse(
    -                                           ctx,
    -                                           httpRequest,
    -                                           new ErrorResponseBody("Client 
did not upload a file."),
    -                                           HttpResponseStatus.BAD_REQUEST,
    -                                           responseHeaders);
    -                                   return;
    -                           }
    -                           //noinspection unchecked
    -                           request = (R) new FileUpload(path);
    -                   } else if (msgContent.capacity() == 0) {
    -                           try {
    -                                   request = MAPPER.readValue("{}", 
untypedResponseMessageHeaders.getRequestClass());
    -                           } catch (JsonParseException | 
JsonMappingException je) {
    -                                   log.error("Request did not conform to 
expected format.", je);
    -                                   HandlerUtils.sendErrorResponse(
    -                                           ctx,
    -                                           httpRequest,
    -                                           new ErrorResponseBody("Bad 
request received."),
    -                                           HttpResponseStatus.BAD_REQUEST,
    -                                           responseHeaders);
    -                                   return;
    +                   try (FileUploads uploadedFiles = 
FileUploadHandler.getMultipartFileUploads(ctx)) {
    --- End diff --
    
    I would obtain the upload directory from `FileUploadHandler` and simply 
delete this directory after the call has been processed. We could, then also 
create `FileUploads` outside of the `FileUploadHandler` to instantiate a 
`HandlerRequest` with it. This would also simplify the `FileUploads` class 
significantly, because it is no longer responsible for deleting the files.


---

Reply via email to