diff options
author | 2018-08-10 10:13:36 -0700 | |
---|---|---|
committer | 2018-08-22 13:07:22 -0700 | |
commit | b59d8674d24d9b40d8d8b2b40f2be0118ff524d2 (patch) | |
tree | 9bff38c639bff0e61f0f2142de72f4b0bbf8655a /src/python/grpcio/grpc/_cython/_cygrpc | |
parent | 2cec9c5344014db548448bd7fbbe04e7c33635be (diff) |
Python post-fork handler: exit if grpc shutdown fails
Diffstat (limited to 'src/python/grpcio/grpc/_cython/_cygrpc')
-rw-r--r-- | src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi | 4 | ||||
-rw-r--r-- | src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi index 1176258da8..0d2516977b 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi @@ -73,6 +73,10 @@ cdef void __postfork_child() nogil: # TODO(ericgribkoff) Check and abort if core is not shutdown with _fork_state.fork_in_progress_condition: _fork_state.fork_in_progress = False + if grpc_is_initialized() > 0: + with gil: + _LOGGER.error('Failed to shutdown gRPC Core after fork()') + os._exit(os.EX_USAGE) def fork_handlers_and_grpc_init(): diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi index bcbfec0c9f..4781219319 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi @@ -322,6 +322,7 @@ cdef extern from "grpc/grpc.h": void grpc_init() nogil void grpc_shutdown() nogil + int grpc_is_initialized() nogil ctypedef struct grpc_completion_queue_factory: pass |