Slack 의 double event

Harrison Jung·2023년 2월 2일
0

Slack 은 다양한 확장 기능으로 사랑받고 있는 서비스이다.
우리 회사는 Slack에서 내부적으로도 혹은 외부 서비스용으로도 Slack App을 만들어서 사용중인데,
그러던중 Slack 버그를 만났다.

Slack에서 App내에 버튼을 눌러 이벤트를 발생시킬때 두번 요청이 가는 버그이다.
우선 처음에는 뭔가 잘못 만들었나 해서 확인을 해봤는데...

두 이벤트 사이의 시간이 불과 2ms 이다...

어.... 이거 어떻게 처리하지..?

해당 이벤트의 경우 첨부터 시간이 좀 걸리는 이벤트였기 때문에 우선 OK 응답을 보내놓고 비동기로 뒤에서 처리하고 있었기때문에 애초에 DB에 해당 작업은 진행중... 이라는 표시를 해놓고, 작업을 했었기에.. 만약에 두 이벤트의 간격이 약 100ms 만 되었어도 저런일이 있는지 조차 몰랐을 것이다.

그런데...

2ms

심하게 짧은데..?
DB까지 갔다 오는 시간만해도 수ms 가 걸릴껀데...

그래서 우선은 검색을 좀 해봤다.

슬랙측에서는 인지를 하고 있는듯 하긴 한데...
아직 안 고쳤나 보다 ㅡㅡ;;

우선은 그래서 임시 해결책!

해당 요청이 들어오면 1~1000ms 의 랜덤 딜레이를 준다.

랜덤으로 딜레이를 줬기 때문에 정말 동시에 요청이 들어온다 하더라도, 하나는 먼저 실행되고 다른 하나는 나중에 실행되서 동시에 실행되는 이슈는 해결될듯.
( 대신에 원래 간격이 200ms 였는데, 정말로 정말로 우연히 앞에꺼가 기다리다가 뒤에꺼랑 동시에 실행되면 어쩌지...? )

장기적으로는 리뉴얼 할때 이 부분을 SQL이 아니라 Redis에 체크를 하도록 수정하도록 하던가 해야겠다. 이건 상상도 못했네...

profile
차세대 생성형 AI 블로그 서비스 "두루미스"를 만들고 있는 개발자

0개의 댓글