Skip to content

Commit

Permalink
fix: Prevent a deadlock on provider error in py automation api
Browse files Browse the repository at this point in the history
  • Loading branch information
elthariel committed Dec 9, 2022
1 parent ef58dcc commit a23f3ac
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions sdk/python/lib/pulumi/automation/_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ def on_pulumi_exit():
def GetRequiredPlugins(self, request, context):
return language_pb2.GetRequiredPluginsResponse()

def _exception_handler(self, loop, context):
# Exception are normally handler deeper in the stack. If this class of
# exception bubble up to here, something is wrong and we should stop
# the event loop
if "exception" in context and isinstance(context["exception"], grpc.RpcError):
loop.stop()
else:
loop.default_exception_handler(context)

def Run(self, request, context):
_suppress_unobserved_task_logging()

Expand All @@ -67,6 +76,7 @@ def Run(self, request, context):
result = language_pb2.RunResponse()
loop = asyncio.new_event_loop()

loop.set_exception_handler(self._exception_handler)
try:
loop.run_until_complete(run_in_stack(self.program))
except RunError as exn:
Expand Down

0 comments on commit a23f3ac

Please sign in to comment.