Affects: 5.2.4 (Webflux)

I am building a simple proxy-upload-service which takes an uploaded file and uploads it to another web service using WebClient

I am hitting some issues when dealing with large file i.e > 30MB, see stack trace below:

java.lang.IllegalStateException: Unable to create the inputStream.
        at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.newFileInputStream(FileStreamStorage.java:324)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
......
......
Caused by: java.io.FileNotFoundException: /tmp/nio-file-upload/nio-body-1-73794d7c-1e74-43b6-ac69-54353d717e55.tmp (No such file or directory)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
    at org.synchronoss.cloud.nio.stream.storage.NameAwarePurgableFileInputStream.<init>(NameAwarePurgableFileInputStream.java:49)
    at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.newFileInputStream(FileStreamStorage.java:322)
    at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.getInputStream(FileStreamStorage.java:245)
    at org.springframework.core.io.buffer.DataBufferUtils.lambda$readInputStream$0(DataBufferUtils.java:83)
......
......

Code:

    @PostMapping("/files/")
    @ResponseStatus(NO_CONTENT)
    fun upload(
        @RequestPart("file") filePartFlux: Flux<FilePart>
    ): Mono<Void> = filePartFlux.flatMap { filePart ->
      val multiPartData = createFileMultiPartData(filePart)

      webClient.method(POST)
        .uri(URI.create("my-upload-uri"))
        .contentType(MediaType.MULTIPART_FORM_DATA)
        .body(BodyInserters.fromMultipartData(multiPartData))
        .retrieve()
    }.then()

    private fun createFileMultiPartData(filePart: FilePart): MultiValueMap<String, HttpEntity<*>> {
        val builder = MultipartBodyBuilder()
        builder.asyncPart("fileData", filePart.content(), DataBuffer::class.java)
            .filename(filePart.filename())
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
        return builder.build()
    }

Comment From: dkulig

Turned out to be a http connection read timeout reached and failed on retry. I am closing this issue

Comment From: xudluo-sh

Affects: 5.2.4 (Webflux)

I am building a simple proxy-upload-service which takes an uploaded file and uploads it to another web service using WebClient

I am hitting some issues when dealing with large file i.e > 30MB, see stack trace below:

java.lang.IllegalStateException: Unable to create the inputStream. at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.newFileInputStream(FileStreamStorage.java:324) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: ...... ...... Caused by: java.io.FileNotFoundException: /tmp/nio-file-upload/nio-body-1-73794d7c-1e74-43b6-ac69-54353d717e55.tmp (No such file or directory) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:213) at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155) at org.synchronoss.cloud.nio.stream.storage.NameAwarePurgableFileInputStream.<init>(NameAwarePurgableFileInputStream.java:49) at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.newFileInputStream(FileStreamStorage.java:322) at org.synchronoss.cloud.nio.stream.storage.FileStreamStorage.getInputStream(FileStreamStorage.java:245) at org.springframework.core.io.buffer.DataBufferUtils.lambda$readInputStream$0(DataBufferUtils.java:83) ...... ......

Code:

```kotlin @PostMapping("/files/") @ResponseStatus(NO_CONTENT) fun upload( @RequestPart("file") filePartFlux: Flux ): Mono = filePartFlux.flatMap { filePart -> val multiPartData = createFileMultiPartData(filePart)

  webClient.method(POST)
    .uri(URI.create("my-upload-uri"))
    .contentType(MediaType.MULTIPART_FORM_DATA)
    .body(BodyInserters.fromMultipartData(multiPartData))
    .retrieve()
}.then()

private fun createFileMultiPartData(filePart: FilePart): MultiValueMap<String, HttpEntity<*>> {
    val builder = MultipartBodyBuilder()
    builder.asyncPart("fileData", filePart.content(), DataBuffer::class.java)
        .filename(filePart.filename())
        .contentType(MediaType.APPLICATION_OCTET_STREAM)
    return builder.build()
}

```

Hello @dkulig , I met the same issue when I tried to post REST to import big file(>30M). then the console showed the same texts you mentioned before. could you tell me how do you fix this error.

Thanks. Regards. Daniel.