확인 시각
블랙홀 스케줄러 main 배포 후 간헐적으로 현재까지 오전 9시 42분 or 오전 10시 정각에 발생.
이슈
•
블랙홀 스케줄러가 동작하는 오전 9시 42분 or 오전 10시에 42 서버에 유저 정보 조회 요청이 여러번 발생하여 429 응답코드를 받아옴. (새 블랙홀 날짜를 갱신받지 못함)
•
영향
블랙홀 스케줄러는 유저의 블랙홀 날짜에 동작하는 타이머를 설정해서, 해당 날짜에 42에 유저 정보를 조회해서 블랙홀 날짜가 갱신되지 않았다면, 블랙홀로 빠진 유저로 인식하고 해당 유저의 사물함을 강제 반납 및 유저 정보 삭제 처리를 함.
유저 정보 조회에 실패하는 경우에, 해당 유저가 과제를 더 마쳐서 블랙홀 날짜가 증가했음에도 서버 측에서 이를 인지하지 못하고, 블랙홀에 빠진 유저로 처리할 위험이 있음.
→ 블랙홀 처리인 경우에 현재 대여중인 사물함을 반납시키고 유저를 삭제하므로 매우 위험함
•
원인
유저의 블랙홀 시간은 오전 9시 42분 or 10시로 고정되어있음.
따라서 블랙홀 날짜가 동일한 여러명의 유저가 있으면, 42로 유저 정보 요청하는 API가 단시간에 여러개 날라감.
42 서버는 단시간에 여러 요청이 오면 429 에러를 응답함. (2초에 한 번 꼴)
조치 내용
•
Blackhole Timer 관련 동일 시간에 많은 Timer를 걸어두어 too many request가 발생하는 것으로 추측.
•
Date에서 seconds를 뒤로 미루는 addSeconds 메소드를 추가하였고,
for문을 돌 때마다 count를 올리고 Timer가 동작하는 시간을 (count * 2)초 만큼씩 미뤄서 해당 문제 해결.
해결 시각
2023년 5월 9일 오후 8시경