본문 바로가기
ERROR FIX

AmazonS3Client - No content length specified for stream data. 경고 WARN

by ppirae 2023. 8. 21.

AmazonS3Client - No content length specified for stream data. Stream contents will be buffered in memory and could result in out of memory errors.

인텔리제이에서 위 WARN이 발생하였는데 이 경고는 아래 내용이다.

ContentLength가 지정되지 않았기 때문에 데이터 스트림이 메모리에 버퍼링될 것입니다.
이로 인해 메모리 부족 오류가 발생할 수 있습니다.
메모리에 큰 양의 데이터를 버퍼링하면 리소스를 상당히 소모할 수 있습니다.

 

회사)
백오피스 개발을 할 때 메모리 부족 오류가 발생하였는지 웹페이지가 에러가 발생했고,
아래처럼 수정하였더니 해결되었다.

 

WARN이 발생한 기존 코드)

ObjectMetadata objectMetadata = new ObjectMetadata();
if(ext.equalsIgnoreCase("APK")) {
    objectMetadata.setContentType("application/vnd.android.package-archive");
    //objectMetadata.setBucketKeyEnabled(true);
}

 

수정한 코드)

ObjectMetadata objectMetadata = new ObjectMetadata();
 if(ext.equalsIgnoreCase("APK")) {
    objectMetadata.setContentType(mimeType);


    ** 이 코드가 없어서 발생하는 에러 **
    objectMetadata.setContentLength(file.length());


    //objectMetadata.setBucketKeyEnabled(true);
 }

objectMetadata.setContentLength(file.length());
이 코드를 통하여 Content-Length를 지정해주면 경고를 제거할 수 있다.

 

참고)

https://docs.aws.amazon.com/codeguru/detector-library/java/s3-object-metadata-content-length-check/

 

Unchecked S3 object metadata content length | Amazon CodeGuru, Detector Library

Failure to specify a content length causes the contents of the input stream to buffer locally in memory in order to calculate its length. This can result in performance problems.

docs.aws.amazon.com

 

댓글