Skip to content

Commit 8f0288d

Browse files
committed
Healthcheck 수정 10 server.rb 수정
1 parent 7acbb7d commit 8f0288d

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

grpc_service/server.rb

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,33 @@ def self.start
8181
puts "[gRPC] Successfully bound to 0.0.0.0:#{grpc_port}"
8282
puts "[gRPC] Waiting for incoming requests..."
8383

84-
# 종료 시그널 핸들링 (서버 안정 종료)
85-
trap('INT') { server.stop }
86-
trap('TERM') { server.stop }
84+
# =====================================================
85+
# 종료 시그널 안전 처리 (Thread-safe)
86+
# =====================================================
87+
stop_requested = false
88+
trap('INT') { stop_requested = true }
89+
trap('TERM') { stop_requested = true }
90+
91+
# gRPC 서버 실행을 별도 스레드에서 수행
92+
server_thread = Thread.new do
93+
begin
94+
server.run_till_terminated
95+
rescue => e
96+
STDERR.puts "[gRPC] Server thread error: #{e.class} - #{e.message}"
97+
STDERR.puts e.backtrace.join("\n")
98+
end
99+
end
100+
101+
# 종료 감시 루프
102+
until stop_requested
103+
sleep 1
104+
end
105+
106+
puts "[gRPC] Stopping server gracefully..."
107+
server.stop
108+
server_thread.join
109+
puts "[gRPC] Server stopped cleanly."
87110

88-
# 서버 실행
89-
server.run_till_terminated
90111
rescue => e
91112
STDERR.puts "[gRPC] Fatal error: #{e.class} - #{e.message}"
92113
STDERR.puts e.backtrace.join("\n")

0 commit comments

Comments
 (0)