boostcamp-2020 / Project18-B-Web-Duxit

🎲 야찌⛵️ 팀의 웹 기반 스토리텔링 보드게임 <Duxit> 🐤
https://duxit.ga
66 stars 7 forks source link

[BUG] 존재하지 않는 game에 접근하여 서버 crash #269

Closed ramram1048 closed 3 years ago

ramram1048 commented 3 years ago

라이브 서버 동작중 발생한 버그라 발생 경위 미지수. 이하는 crash 에러 전문

TypeError: Cannot read property ‘updateUserProfile’ of undefined
  at Socket.D (/home/duxit/Project18-B-Web-Duxit/src/backend/dist/app.js:1:13427)
  at Socket.emit (events.js:314:20)
  at Socket.onevent (/home/duxit/Project18-B-Web-Duxit/src/backend/node_modules/socket.io/dist/socket.js:253:20)
  at Socket._onpacket (/home/duxit/Project18-B-Web-Duxit/src/backend/node_modules/socket.io/dist/socket.js:216:22)
  at /home/duxit/Project18-B-Web-Duxit/src/backend/node_modules/socket.io/dist/client.js:205:28
  at processTicksAndRejections (internal/process/task_queues.js:79:11)
error: Forever detected script exited with code: 1

추적 결과 src/backend/sockets/waitingRoom.js:36 라인에서 에러난 것으로 추정 여기서 난 것이 맞다면 게임이 존재하지 않는데 update player 이벤트가 클라이언트->서버로 전송된 것으로 보임

즉 존재하지 않는 게임인데 -> 로비로 튕겨나가지 않았고 -> 그와중에 waitingRoom이 렌더됐고 -> 거깄는 컴포넌트로 닉네임이나 색상을 바꿔서 그렇다?

또는 사람이 멀쩡히 waitingRoom에 있었는데 게임이 존재하지 않게됐고 그상태에서 updatePlayer가 찍혔다? 등등의 가능성으로 발생한 것 같음 이러면 프론트 책임도 있을수도?

Front-line-dev commented 3 years ago

백엔드 socket/waitingRoom.js 에서 예외처리 되어야 할 부분들이 안 되어있는게 문제인거 같습니다. 백엔드에서 고쳐야 할 거 같아요