Guarantee no race between ruby server's shutdown_and_notify and destroy

pull/14134/head
Alexander Polcyn 7 years ago
parent 7b87bab832
commit d60ed8f1f8
  1. 12
      src/ruby/lib/grpc/generic/rpc_server.rb

@ -244,9 +244,9 @@ module GRPC
fail 'Cannot stop before starting' if @running_state == :not_started
return if @running_state != :running
transition_running_state(:stopping)
deadline = from_relative_time(@poll_period)
@server.shutdown_and_notify(deadline)
end
deadline = from_relative_time(@poll_period)
@server.shutdown_and_notify(deadline)
@pool.stop
end
@ -416,9 +416,11 @@ module GRPC
end
end
# @running_state should be :stopping here
@run_mutex.synchronize { transition_running_state(:stopped) }
GRPC.logger.info("stopped: #{self}")
@server.close
@run_mutex.synchronize do
transition_running_state(:stopped)
GRPC.logger.info("stopped: #{self}")
@server.close
end
end
def new_active_server_call(an_rpc)

Loading…
Cancel
Save