본문 바로가기
이런 이슈 in 개발

[gRPC] Servicer에서 요청 처리할 때, 주의 사항!!

by 바람 멘토 2023. 11. 16.
반응형

기본적인 서버-클라이언트 구현에 대한 부분은 github태주네 블로그에 잘 설명되어 있기 때문에 핵심만 간단히!! ^^

 

문제 상황

요청을 처리하려고 하는데, 간혹 요청한 내용에 대한 응답이 아닌 다른 내용이 수신돼요!! ㅠㅠ

 

해결 방법

Request를 처리하는 Thread에서 Servicer를 호출하는 시점에  class id를 확인했을 때, 동일한 id를 사용하는 것으로 보아 동일한 instance를 사용하는 것을 알 수 있다.

 

따라서, class를 self.variable와 같이 class 멤버로 request마다 instance를 생성하여 사용할 경우, 새로운 reqeust로 인해 이전 self.variable은 본 프로그램이 관리/접근할 수 없는 상태(C/C++에서의 dangling pointer)가 된다.

 

이러한 경우에는 variable을 request 시에 호출되는 method 내에서 로컬 변수로 사용하면 해결된다.

즉, Srevicer = Server Instance로 이해하면 되겠다.

반응형

댓글