Feign multipart file upload intermittently fails with RetryableException: Incomplete output stream

1 day ago 1
ARTICLE AD BOX

I’m facing an issue while uploading a file between two Spring Boot microservices using OpenFeign.

task-service generates an Excel file

It sends the file to system-service using Feign (multipart/form-data)

System-Service uploads the file to AWS S3

Feign Client

@FeignClient( name = "system-service", url = "${feign.client.main.url.system}", configuration = FeignMultipartConfig.class ) public interface SystemServiceClient { @PostMapping( value = "/system-service/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE ) Map<String, Object> uploadFile( @RequestPart("file") Resource file, @RequestHeader MultiValueMap<String, String> headers ); }

File being sent

ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(tempFile)) { @Override public String getFilename() { return fileName; } };

Controller in system-service

@PostMapping("/uploadFile") public Map<String, Object> uploadFile( @RequestPart("file") MultipartFile file, @RequestHeader MultiValueMap<String, String> headers) { return awsService.uploadFile(file, headers); }

AWS upload

s3Client.putObject( request, RequestBody.fromInputStream( file.getInputStream(), file.getSize() ) );

Issue:

The upload works sometimes, but intermittently fails with:

java.util.concurrent.ExecutionException: feign.RetryableException: Incomplete output stream executing POST http://localhost:9008/system-service/uploadFile

Read Entire Article