Skip to content

Commit d8ffba1

Browse files
committed
address the issue where heartbeat could be lost in reference in async context
Signed-off-by: Tim Li <ltim@uber.com>
1 parent 8777db6 commit d8ffba1

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

cadence/_internal/activity/_context.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __init__(
2121
self._info = info
2222
self._activity_def = activity_def
2323
self._heartbeat_sender = heartbeat_sender
24+
self._heartbeat_tasks: set[asyncio.Task[None]] = set()
2425

2526
async def execute(self, payload: Payload) -> Any:
2627
params = self._to_params(payload)
@@ -39,7 +40,9 @@ def info(self) -> ActivityInfo:
3940
return self._info
4041

4142
def heartbeat(self, *details: Any) -> None:
42-
asyncio.ensure_future(self._heartbeat_sender.send_heartbeat(*details))
43+
task = asyncio.create_task(self._heartbeat_sender.send_heartbeat(*details))
44+
self._heartbeat_tasks.add(task)
45+
task.add_done_callback(self._heartbeat_tasks.discard)
4346

4447

4548
class _SyncContext(_Context):

0 commit comments

Comments
 (0)