def get_result_from_future()

in aws_advanced_python_wrapper/writer_failover_handler.py [0:0]


    def get_result_from_future(self, current_topology: Tuple[HostInfo, ...]) -> WriterFailoverResult:
        writer_host: Optional[HostInfo] = self.get_writer(current_topology)
        if writer_host is not None:
            self._plugin_service.set_availability(writer_host.as_aliases(), HostAvailability.UNAVAILABLE)

            with ThreadPoolExecutor(thread_name_prefix="WriterFailoverHandlerExecutor") as executor:
                try:
                    futures = [executor.submit(self.reconnect_to_writer, writer_host),
                               executor.submit(self.wait_for_new_writer, current_topology, writer_host)]
                    for future in as_completed(futures, timeout=self._max_failover_timeout_sec):
                        result = future.result()
                        if result.is_connected:
                            executor.shutdown(wait=False)
                            self.log_task_success(result)
                            return result
                        if result.exception is not None:
                            executor.shutdown(wait=False)
                            return result
                except TimeoutError:
                    self._timeout_event.set()
                finally:
                    self._timeout_event.set()

        return WriterFailoverHandlerImpl.failed_writer_failover_result