Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

Commit e337df7

Browse files
committed
fix: use correct type + use proper close method
Signed-off-by: Samantha Coyle <sam@diagrid.io>
1 parent 6b4a726 commit e337df7

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

durabletask/worker.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from datetime import datetime, timedelta
1313
from threading import Event, Thread
1414
from types import GeneratorType
15-
from typing import Any, Generator, Optional, Sequence, TypeVar, Union
15+
from typing import Any, Generator, Iterator, Optional, Sequence, TypeVar
1616

1717
import grpc
1818
from google.protobuf import empty_pb2
@@ -30,7 +30,8 @@
3030
# If `opentelemetry-sdk` is available, enable the tracer
3131
try:
3232
from opentelemetry import trace
33-
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
33+
from opentelemetry.trace.propagation.tracecontext import \
34+
TraceContextTextMapPropagator
3435

3536
otel_propagator = TraceContextTextMapPropagator()
3637
otel_tracer = trace.get_tracer(__name__)
@@ -283,7 +284,7 @@ class TaskHubGrpcWorker:
283284
activity function.
284285
"""
285286

286-
_response_stream: Optional[grpc.Future] = None
287+
_response_stream: Optional[Iterator[Any]] = None
287288
_interceptors: Optional[list[shared.ClientInterceptor]] = None
288289

289290
def __init__(
@@ -418,10 +419,10 @@ def create_fresh_connection():
418419

419420
def invalidate_connection():
420421
nonlocal current_channel, current_stub, current_reader_thread
421-
# Cancel the response stream first to signal the reader thread to stop
422+
# Close the response stream first to signal the reader thread to stop
422423
if self._response_stream is not None:
423424
try:
424-
self._response_stream.cancel()
425+
self._response_stream.close()
425426
except Exception:
426427
pass
427428
self._response_stream = None
@@ -740,7 +741,10 @@ def stop(self):
740741

741742
self._logger.info("Stopping gRPC worker...")
742743
if self._response_stream is not None:
743-
self._response_stream.cancel()
744+
try:
745+
self._response_stream.close()
746+
except Exception as e:
747+
self._logger.exception(f"Error stopping response stream: {e}")
744748
self._shutdown.set()
745749
# Explicitly close the gRPC channel to ensure OTel interceptors and other resources are cleaned up
746750
if self._current_channel is not None:

0 commit comments

Comments
 (0)