in aws_advanced_python_wrapper/read_write_splitting_plugin.py [0:0]
def _initialize_reader_connection(self, hosts: Tuple[HostInfo, ...]):
if len(hosts) == 1:
writer_host = self._get_writer(hosts)
if writer_host is not None:
if not self._is_connection_usable(self._writer_connection, self._plugin_service.driver_dialect):
self._get_new_writer_connection(writer_host)
logger.warning("ReadWriteSplittingPlugin.NoReadersFound", writer_host.url)
return
conn: Optional[Connection] = None
reader_host: Optional[HostInfo] = None
conn_attempts = len(self._plugin_service.hosts) * 2
for _ in range(conn_attempts):
host = self._plugin_service.get_host_info_by_strategy(HostRole.READER, self._reader_selector_strategy)
if host is not None:
try:
conn = self._plugin_service.connect(host, self._properties)
provider = self._conn_provider_manager.get_connection_provider(host, self._properties)
self._is_reader_conn_from_internal_pool = (ReadWriteSplittingPlugin._POOL_PROVIDER_CLASS_NAME in str(type(provider)))
reader_host = host
break
except Exception:
logger.warning("ReadWriteSplittingPlugin.FailedToConnectToReader", host.url)
if conn is None or reader_host is None:
self._log_and_raise_exception("ReadWriteSplittingPlugin.NoReadersAvailable")
return
logger.debug("ReadWriteSplittingPlugin.SuccessfullyConnectedToReader", reader_host.url)
self._set_reader_connection(conn, reader_host)
self._switch_current_connection_to(conn, reader_host)
logger.debug("ReadWriteSplittingPlugin.SwitchedFromWriterToReader", reader_host.url)