고루틴 사용시 context 종료를 잘 신경쓰자
발생 이슈
- 내부 공통 패키지를 변경하면서 go-redis 버전이 변경됨
- 해당 패키지를 적용한 뒤에 소켓이 발생하지 않는 이슈
이슈 발생 원인
- go-redis v7 -> v9 로 버전이 변경되면서
ctx
를 인자로 받게 됨.
- 메인 로직을 goroutine 으로 처리하고 있었는데 해당 로직의 내부에서 추가 goroutine 을 통해 소켓을 발송하고 있음
- 소켓 로직이 비동기로 처리되다보니 메인 로직의 goroutine 이 종료되면서 해당 context 를 종료. 이로 인해 소켓 로직이 종료
해결
- goroutine 사용 로직을 internal 에 정의해서 사용하고 있었기 때문에 goroutine 누수는 발생하지 않을 것이라고 판단,
context.Background()
로 새로운 컨텍스트를 통해 소켓 발송