https://www.youtube.com/watch?v=-2TgkKYmJt4&t=8s
CORS 정보 : CORS가 생긴 이유
https://juneyr.dev/2018-12-23/cors
게시물/카페후기 작성 API에서 일부 사진을 첨부하고 작성완료를 눌렀을 때 아무런 반응이 없는(게시물 작성이 안됨) 상황이 일어났다
개발자도구를 켜보니 또 CORS 에러가 났다!!!!!!!!!!
참 알 수가 없다
분명히 CORS 문제는 해결 했는데..
게다가 어떤 사진은 올라가고 어떤 사진은 안 올라가고...왜 사진을 가려서 API를 실행하는 건지...
그래서 'nginx 사진 cors' 라고 치니까 나와 같은 상황이 있었다
https://powellstreet.tistory.com/87
와 새로운 사실이다
nginx의 문제가 진짜였다니...설마했는데...
어렵지 않게 해결했다
https://www.runit.cloud/2020/05/nginx-upload-file-size.html
빨간 글씨를 추가하니까 해결되었다
가장 바깥쪽에 있는 server에 적어줘야 한다
server {
client_max_body_size 10M;
...
server {
...
}
...
}
충격이다..!!!!!!!!!!!
오늘 밤에 정식 오픈했다(홍보는 안 해서 우리만 썼지만)
게시물을 올려보면서 여러가지 테스트를 해 봤다
데이터가 잘 보여지는지, 그 데이터는 정확한건지, 기능은 제대로 작동하는지, CSS는 제대로 적용되었는지 등
다양하게 확인해봤다
그런데, 메인 페이지에서 실시간 랭킹을 보여주는 데에서 문제가 생겼다
실시간으로 업데이트가 되어야하는데 업데이트가 되지 않는다
좋아요왕을 실시간으로 조회하는데 1등이 '사람'이다(3개)
하지만 현재 '사람'의 좋아요 개수는 5개이다
좋아요왕을 판단하는 기준은 이 사람이 쓴 카페 후기 게시물 중에서 각 게시물의 좋아요를 모두 합친 개수이다
이거 봐라!!!! 총 5개다!!! 3개가 아니다 정말!!!
와 이게 무슨일이지 하면서 뇌정지가 왔다가
정신차려보고 로그를 하나하나 꼼꼼히 봤다
여기서 내 머리 위에 물음표 10개가 달렸다
설명을 하자면 사진에 있는 쿼리를 실행을 한건데
쿼리 안에 '?'가 2개 있다
'?' 안에 데이터가 들어가는데 그 데이터는 쿼리 바로 아래에 찍혀있는 두 줄,
'2021011022T00:00'과 '2021-11-27T02:41:17.243845'가 순서대로 들어간다
이 범위 안에 있는 데이터들을 조회한다는 뜻인데,
'2021-11-27T02:41:17.243845' 이것이 잘못 되었다
'2021-11-27T02:41:17.243845' 이것은 쿼리를 실행한 시각이 들어가야 정상인데
난 오전 2시 41분에 실행하지 않았다.
오전 4시 40분쯤 실행했다
이렇기 때문에 뇌정지가 왔었다
'2021011022T00:00'과 '2021-11-27T02:41:17.243845' 이것이 아닌
'2021011022T00:00'과 '2021-11-27T04:40:00' 이것이 들어가야 정상인 것이다
로컬에서 테스트해봤다
API를 실행한 시각과 함수의 매개변수에 들어가는 시간을 비교해야 한다
time 변수는 LocalDateTime의 now() 를 사용해서 API를 실행한 시각이 들어가야 한다
즉 5시 22분이 아닌 5시 23분이 들어가야 정상이다
하지만 왜 time 변수엔 5시 22분이 들어가있는거지?!?!?!?!?!?
29줄도 디버그 찍어보고
혹시나 시간대 설정을 잘못 해서 그런가 싶어서 현재시각도 sout 해봤다
디버그를 다시 실행했다
현재 시각도 잘 찍혔다
그런데
서버가 실행되자마자 바로 이 부분으로 디버그가 찍힌다!!!!!!!!!!!
왜!!@!?!?!?
잘 생각해보니까 time변수는 RankingService의 전역변수이다
그래서 그런지 서버를 실행한 시각이 time변수에 들어가는 것 같다
빨간 선으로 표시한 부분을 주의깊게 봐야 한다
오전 5시 35분에 서버를 실행했고, 그래서 전역변수 time에는 서버를 실행한 시각 오전 5시 35분이 들어갔다
나는 5시 36분에 이 API를 호출했다
이 API는 "실시간" 랭킹이기 때문에 사람 머리로 예상해봤을 땐 time변수에 5시 36분이 들어가야 한다
하지만 5시 36분이 아닌 5시 35분이 들어가있다
결론은 저 time변수는 서버 실행 시각이 들어간다는 말이다.
그리고 저 위쪽에 EC2에서 실시간 랭킹 API를 호출했을 때 찍힌 시간이 오전 2시 41분인데
이것은 서버를 재기동한 시각인 것이다
증거 제출합니다
오전 2시에 재기동을 했고 실시간 랭킹 기능 때문에 2시 이후에 또 재기동을 했었다
그 시간이 오전 2시 41분인 것이다
후..............원인을 찾아냈다
좀 일찍좀 찾아내지 자려고 했는데 이 새벽에 이 사실을 알아챈거냐....
'항해99 3기' 카테고리의 다른 글
[TIL] 2021.11.28 - 내일 꼭 해야할 일 (0) | 2021.11.29 |
---|---|
[TIL] 2021.11.27 최종 프로젝트 진행중 - 로그 파일 월별로 남기기 / 또 일어난 이슈 / DB 데이터 복제 (0) | 2021.11.27 |
[TIL] 2021.11.25 ~ 26 최종 프로젝트 진행중 - EC2 https 적용 (2) | 2021.11.26 |
[TIL] 2021.11.24 최종 프로젝트 진행중 - JPA Native Query return 형식 / Java 저번 주 날짜 구하기 (4) | 2021.11.24 |
[TIL] 2021.11.23 최종 프로젝트 진행중 - tomcat에 SSL 적용 /대표님과 면담 (0) | 2021.11.24 |