remove Connection.server_version and use host metadata

This commit is contained in:
Adam Holmberg
2016-04-15 10:08:45 -05:00
parent d4d29cc523
commit 71e3795782
4 changed files with 7 additions and 29 deletions

View File

@@ -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)

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)