728x90
반응형
AmazonS3Exception: The Content-MD5 you specified did not match what we received.
AWS S3 Storage로 파일 업로드를 진행하고 있습니다.
하지만 간헐적으로 해당 오류가 발생하면서 Exception이 발생함을 모니터링을 통해 확인했습니다.
원인분석 및 사례를 공유합니다.
발생 원인
결론부터 이야기하면 동시에 같은 경로의 같은 파일명으로 업로드하려 했고, 그 과정 속에서 파일이 변경되고 있습니다.
API서버에 업로드 기능이 구현되어 있는데 같은 파일명으로 업로드하게끔 짧은 주기로 계속 호출하고 있었습니다.
업로드가 진행되는 와중에 사용하고 있던 File이 변경되어 해당 에러가 발생했습니다.
https://stackoverflow.com/questions/36179310/an-exception-the-content-md5-you-specified-did-not-match-what-we-received
테스트 케이스
File file1 = new File("/test.txt");
File file2 = new File("/test.txt");
file1.delete();
// 예상 결과는?
System.out.println(file1.exists());
System.out.println(file2.exists());
처음에는 true / false 가 아닐까 생각했다.
같은 파일이긴 했지만 파일이 존재할 때 각각 인스턴스화해 놓았기 때문에 file1을 지워도 file2 변수에는 영향이 없을 거라 생각했다.
하지만 결과는 false / false였다.
같은 스레드라서 그런가 싶어서, API 서버라고 가정하고 다른 스레드 환경에서도 테스트했더니 동일했다.
자바 API 문서를 보면 File 클래스는 불변이라고 한다.
자바에서 대표적인 불변객체를 생각하면 String이 떠오른다.
String과 같은 개념이라고 생각하니 이해가 조금 빨랐다.
추가로 AmazonClientException: Data read has a different length than the expected 해당 에러 메시지도 동일한 원인입니다
728x90
반응형
'WEB' 카테고리의 다른 글
[WEB/HTTP] 07. HTTP 헤더 - 일반 헤더 (0) | 2021.09.12 |
---|---|
[WEB/HTTP] 06. HTTP 상태코드 (0) | 2021.08.22 |
[WEB/HTTP] 05. HTTP 메서드 활용 (0) | 2021.08.16 |
[WEB/HTTP] 04. HTTP 메서드 (0) | 2021.08.15 |
[WEB/HTTP] 03. HTTP 기본 (0) | 2021.08.14 |
댓글