aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/python/grpcio/grpc/_cython/_cygrpc
diff options
context:
space:
mode:
authorGravatar Eric Gribkoff <ericgribkoff@google.com>2018-08-10 10:13:36 -0700
committerGravatar Eric Gribkoff <ericgribkoff@google.com>2018-08-22 13:07:22 -0700
commitb59d8674d24d9b40d8d8b2b40f2be0118ff524d2 (patch)
tree9bff38c639bff0e61f0f2142de72f4b0bbf8655a /src/python/grpcio/grpc/_cython/_cygrpc
parent2cec9c5344014db548448bd7fbbe04e7c33635be (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.pxi4
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi1
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