Skip to content

Commit f588596

Browse files
committed
chore: fix race condition in task A
1 parent 2e5abf6 commit f588596

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

aws_advanced_python_wrapper/writer_failover_handler.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ def get_result_from_future(self, current_topology: Tuple[HostInfo, ...]) -> Writ
120120

121121
executor = ThreadPoolExecutor(thread_name_prefix="WriterFailoverHandlerExecutor")
122122
try:
123+
futures = [executor.submit(self.reconnect_to_writer, writer_host),
124+
executor.submit(self.wait_for_new_writer, current_topology, writer_host)]
123125
try:
124-
futures = [executor.submit(self.reconnect_to_writer, writer_host),
125-
executor.submit(self.wait_for_new_writer, current_topology, writer_host)]
126126
for future in as_completed(futures, timeout=self._max_failover_timeout_sec):
127127
logger.info("future completed")
128128
result = future.result()
@@ -133,12 +133,12 @@ def get_result_from_future(self, current_topology: Tuple[HostInfo, ...]) -> Writ
133133
return result
134134
except TimeoutError:
135135
logger.info("futures timed out")
136-
logger.info("setting timeout_event 1")
137-
self._timeout_event.set()
138-
finally:
139-
logger.info("setting timeout_event 2")
140136
self._timeout_event.set()
137+
# Cancel remaining futures to prevent hanging
138+
for future in futures:
139+
future.cancel()
141140
finally:
141+
self._timeout_event.set()
142142
executor.shutdown(wait=False)
143143

144144
return WriterFailoverHandlerImpl.failed_writer_failover_result

0 commit comments

Comments
 (0)