Skip to content

Commit 2f04a16

Browse files
authored
Fix flaky test: test_workflow_return_is_honored_when_it_precedes_signal_completion_command (#1115)
* Run the test a lot * Run the test a bunch * More logs * Format * Try a simpler method of signals waiting for run completion * Remove ci changes and logging
1 parent 6dd59dd commit 2f04a16

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

tests/worker/test_workflow.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6100,22 +6100,21 @@ def __init__(
61006100
self.main_workflow_returns_before_signal_completions = (
61016101
main_workflow_returns_before_signal_completions
61026102
)
6103-
self.ping_pong_val = 1
6104-
self.ping_pong_counter = 0
6105-
self.ping_pong_max_count = 4
6103+
self.run_finished = False
61066104

61076105
@workflow.run
61086106
async def run(self) -> str:
61096107
await workflow.wait_condition(
61106108
lambda: self.seen_first_signal and self.seen_second_signal
61116109
)
6110+
self.run_finished = True
61126111
return "workflow-result"
61136112

61146113
@workflow.signal
61156114
async def this_signal_executes_first(self):
61166115
self.seen_first_signal = True
61176116
if self.main_workflow_returns_before_signal_completions:
6118-
await self.ping_pong(lambda: self.ping_pong_val > 0)
6117+
await workflow.wait_condition(lambda: self.run_finished)
61196118
raise ApplicationError(
61206119
"Client should see this error unless doing ping-pong "
61216120
"(in which case main coroutine returns first)"
@@ -6126,18 +6125,12 @@ async def this_signal_executes_second(self):
61266125
await workflow.wait_condition(lambda: self.seen_first_signal)
61276126
self.seen_second_signal = True
61286127
if self.main_workflow_returns_before_signal_completions:
6129-
await self.ping_pong(lambda: self.ping_pong_val < 0)
6128+
await workflow.wait_condition(lambda: self.run_finished)
61306129
raise ApplicationError("Client should never see this error!")
61316130

6132-
async def ping_pong(self, cond: Callable[[], bool]):
6133-
while self.ping_pong_counter < self.ping_pong_max_count:
6134-
await workflow.wait_condition(cond)
6135-
self.ping_pong_val = -self.ping_pong_val
6136-
self.ping_pong_counter += 1
6137-
61386131

61396132
@workflow.defn
6140-
class FirstCompletionCommandIsHonoredPingPongWorkflow(
6133+
class FirstCompletionCommandIsHonoredSignalWaitWorkflow(
61416134
FirstCompletionCommandIsHonoredWorkflow
61426135
):
61436136
def __init__(self) -> None:
@@ -6166,10 +6159,10 @@ async def _do_first_completion_command_is_honored_test(
61666159
client: Client, main_workflow_returns_before_signal_completions: bool
61676160
):
61686161
workflow_cls: Union[
6169-
Type[FirstCompletionCommandIsHonoredPingPongWorkflow],
6162+
Type[FirstCompletionCommandIsHonoredSignalWaitWorkflow],
61706163
Type[FirstCompletionCommandIsHonoredWorkflow],
61716164
] = (
6172-
FirstCompletionCommandIsHonoredPingPongWorkflow
6165+
FirstCompletionCommandIsHonoredSignalWaitWorkflow
61736166
if main_workflow_returns_before_signal_completions
61746167
else FirstCompletionCommandIsHonoredWorkflow
61756168
)

0 commit comments

Comments
 (0)