remove Connection.server_version and use host metadata
This commit is contained in:
@@ -2357,8 +2357,6 @@ class ControlConnection(object):
|
||||
if partitioner and tokens:
|
||||
token_map[host] = tokens
|
||||
|
||||
connection.server_version = local_row['release_version']
|
||||
|
||||
# Check metadata.partitioner to see if we haven't built anything yet. If
|
||||
# every node in the cluster was in the contact points, we won't discover
|
||||
# any new nodes, so we need this additional check. (See PYTHON-90)
|
||||
|
@@ -232,8 +232,6 @@ class Connection(object):
|
||||
is_control_connection = False
|
||||
signaled_error = False # used for flagging at the pool level
|
||||
|
||||
_server_version = None
|
||||
|
||||
_iobuf = None
|
||||
_current_frame = None
|
||||
|
||||
@@ -829,18 +827,6 @@ class Connection(object):
|
||||
def reset_idle(self):
|
||||
self.msg_received = False
|
||||
|
||||
@property
|
||||
def server_version(self):
|
||||
if self._server_version is None:
|
||||
query_message = QueryMessage(query="SELECT release_version FROM system.local", consistency_level=ConsistencyLevel.ONE)
|
||||
message = self.wait_for_response(query_message)
|
||||
self._server_version = message.results[1][0][0] # (col names, rows)[rows][first row][only item]
|
||||
return self._server_version
|
||||
|
||||
@server_version.setter
|
||||
def server_version(self, version):
|
||||
self._server_version = version
|
||||
|
||||
def __str__(self):
|
||||
status = ""
|
||||
if self.is_defunct:
|
||||
|
@@ -117,13 +117,15 @@ class Metadata(object):
|
||||
|
||||
def refresh(self, connection, timeout, target_type=None, change_type=None, **kwargs):
|
||||
|
||||
server_version = self.get_host(connection.host).release_version
|
||||
parser = get_schema_parser(connection, server_version, timeout)
|
||||
|
||||
if not target_type:
|
||||
self._rebuild_all(connection, timeout)
|
||||
self._rebuild_all(parser)
|
||||
return
|
||||
|
||||
tt_lower = target_type.lower()
|
||||
try:
|
||||
parser = get_schema_parser(connection, timeout)
|
||||
parse_method = getattr(parser, 'get_' + tt_lower)
|
||||
meta = parse_method(self.keyspaces, **kwargs)
|
||||
if meta:
|
||||
@@ -135,12 +137,7 @@ class Metadata(object):
|
||||
except AttributeError:
|
||||
raise ValueError("Unknown schema target_type: '%s'" % target_type)
|
||||
|
||||
def _rebuild_all(self, connection, timeout):
|
||||
"""
|
||||
For internal use only.
|
||||
"""
|
||||
parser = get_schema_parser(connection, timeout)
|
||||
|
||||
def _rebuild_all(self, parser):
|
||||
current_keyspaces = set()
|
||||
for keyspace_meta in parser.get_all_keyspaces():
|
||||
current_keyspaces.add(keyspace_meta.name)
|
||||
@@ -2455,8 +2452,7 @@ class MaterializedViewMetadata(object):
|
||||
return self.as_cql_query(formatted=True) + ";"
|
||||
|
||||
|
||||
def get_schema_parser(connection, timeout):
|
||||
server_version = connection.server_version
|
||||
def get_schema_parser(connection, server_version, timeout):
|
||||
if server_version.startswith('3'):
|
||||
return SchemaParserV3(connection, timeout)
|
||||
else:
|
||||
|
@@ -380,9 +380,7 @@ class IndexTest(unittest.TestCase):
|
||||
column_meta.table.name = 'table_name_here'
|
||||
column_meta.table.keyspace_name = 'keyspace_name_here'
|
||||
column_meta.table.columns = {column_meta.name: column_meta}
|
||||
connection = Mock()
|
||||
connection.server_version = '2.1.0'
|
||||
parser = get_schema_parser(connection, 0.1)
|
||||
parser = get_schema_parser(Mock(), '2.1.0', 0.1)
|
||||
|
||||
row = {'index_name': 'index_name_here', 'index_type': 'index_type_here'}
|
||||
index_meta = parser._build_index_metadata(column_meta, row)
|
||||
|
Reference in New Issue
Block a user