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-servicewhich takes an uploaded file and uploads it to another web service usingWebClientI 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.