Загрузка файлов застряла на больших файлах с помощью Spring Web в Windows - PullRequest
0 голосов
/ 29 января 2019

У меня есть приложение JHipster, предоставляющее конечную точку REST для загрузки файлов.

Этот код без проблем работает в контейнере Docker на компьютере с Linux, но, похоже, застрял в том же контейнере Docker, работающем в Windows.

@PostMapping("/datafiles")
@Timed
public ResponseEntity<DataFileDTO> createDataFile(@Valid @RequestParam("file") MultipartFile data,
        @Valid @RequestHeader("workspaceId") Long workspaceId, RedirectAttributes redirectAttributes)
        throws URISyntaxException, IOException {
    log.debug("REST request to save a data content");

    DataFileDTO result = dataFileService.createFromData(data, workspaceId);

    return ResponseEntity.created(new URI("/api/datafiles/" + result.getId()))
            .headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, result.getId().toString())).body(result);
}

Этот код работает для видеофайла размером 12 МБ, но когда я пытаюсь загрузить файл размером 70 МБ, журнал отладки не появляется, и сервер блокируется до тех пор, пока не истечет тайм-аут из undertow

    Jan 29 15:26:46 StorageService StorageService-dockerstorage_storageservice-app_1.network:8081: ERROR - io.undertow.request : UT005023: Exception handling request to /api/datafiles
java.io.IOException: UT000128: Remote peer closed connection before all data could be read
    at io.undertow.conduits.FixedLengthStreamSourceConduit.exitRead(FixedLengthStreamSourceConduit.java:338)
    at io.undertow.conduits.FixedLengthStreamSourceConduit.read(FixedLengthStreamSourceConduit.java:255)
    at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
    at io.undertow.channels.DetachableStreamSourceChannel.read(DetachableStreamSourceChannel.java:209)
    at io.undertow.server.HttpServerExchange$ReadDispatchChannel.read(HttpServerExchange.java:2343)
    at org.xnio.channels.Channels.readBlocking(Channels.java:294)
    at io.undertow.servlet.spec.ServletInputStreamImpl.readIntoBuffer(ServletInputStreamImpl.java:192)
    at io.undertow.servlet.spec.ServletInputStreamImpl.read(ServletInputStreamImpl.java:168)
    at io.undertow.server.handlers.form.MultiPartParserDefinition$MultiPartUploadHandler.parseBlocking(MultiPartParserDefinition.java:223)
    at io.undertow.servlet.spec.HttpServletRequestImpl.parseFormData(HttpServletRequestImpl.java:792)
    ... 43 common frames omitted

Изменение времени ожидания просто заставляет сервер ждать, но с моей частью кода ничего не происходит.

Есть ли что-то специфическое для Windows в этом случае?

1 Ответ

0 голосов
/ 15 февраля 2019

Наконец-то я обнаружил, что проблема не в стороне JHipster, а в том, что она связана с конфигурацией контейнера NGinx Docker, на котором работает внешний интерфейс.Похоже, что конфигурация по умолчанию отличается в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...