Skip to content

Commit

Permalink
Merge "Set autopack_names and _values to False when using obj_uuid_cf…
Browse files Browse the repository at this point in the history
… to avoid pycassa having to decode from stored values as it is always of string/unicode type. This speeds up list and startup operations. Pass additional cf kwargs to pycassa as is."
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Aug 2, 2016
2 parents e35c80f + 61c9332 commit 2dc76b3
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 40 deletions.
4 changes: 2 additions & 2 deletions src/config/api-server/vnc_cfg_ifmap.py
Expand Up @@ -834,8 +834,8 @@ def __init__(self, db_client_mgr, cass_srv_list, reset_config, db_prefix,
cassandra_credential):
self._db_client_mgr = db_client_mgr
keyspaces = self._UUID_KEYSPACE.copy()
keyspaces[self._USERAGENT_KEYSPACE_NAME] = [
(self._USERAGENT_KV_CF_NAME, None)]
keyspaces[self._USERAGENT_KEYSPACE_NAME] = {
self._USERAGENT_KV_CF_NAME: {}}
super(VncServerCassandraClient, self).__init__(
cass_srv_list, db_prefix, keyspaces, None, self.config_log,
generate_url=db_client_mgr.generate_url,
Expand Down
61 changes: 36 additions & 25 deletions src/config/common/vnc_cassandra.py
Expand Up @@ -55,9 +55,22 @@ class VncCassandraClient(object):
# where type is entity object is being shared with. Project initially
_OBJ_SHARED_CF_NAME = 'obj_shared_table'

_UUID_KEYSPACE = {_UUID_KEYSPACE_NAME:
[(_OBJ_UUID_CF_NAME, None), (_OBJ_FQ_NAME_CF_NAME, None),
(_OBJ_SHARED_CF_NAME, None)]}
_UUID_KEYSPACE = {
_UUID_KEYSPACE_NAME: {
_OBJ_UUID_CF_NAME: {
'cf_args': {
'autopack_names': False,
'autopack_values': False,
},
},
_OBJ_FQ_NAME_CF_NAME: {
'cf_args': {
'autopack_values': False,
},
},
_OBJ_SHARED_CF_NAME: {}
}
}

_MAX_COL = 10000000

Expand Down Expand Up @@ -418,11 +431,11 @@ def _cassandra_init(self, server_list):

self.sys_mgr = self._cassandra_system_manager()
self.existing_keyspaces = self.sys_mgr.list_keyspaces()
for ks,cf_list in self._rw_keyspaces.items():
for ks,cf_dict in self._rw_keyspaces.items():
keyspace = '%s%s' %(self._db_prefix, ks)
self._cassandra_ensure_keyspace(keyspace, cf_list)
self._cassandra_ensure_keyspace(keyspace, cf_dict)

for ks,cf_list in self._ro_keyspaces.items():
for ks,_ in self._ro_keyspaces.items():
keyspace = '%s%s' %(self._db_prefix, ks)
self._cassandra_wait_for_keyspace(keyspace)

Expand Down Expand Up @@ -456,7 +469,7 @@ def _cassandra_wait_for_keyspace(self, keyspace):
self.existing_keyspaces = self.sys_mgr.list_keyspaces()
# end _cassandra_wait_for_keyspace

def _cassandra_ensure_keyspace(self, keyspace_name, cf_info_list):
def _cassandra_ensure_keyspace(self, keyspace_name, cf_dict):
if self._reset_config and keyspace_name in self.existing_keyspaces:
try:
self.sys_mgr.drop_keyspace(keyspace_name)
Expand All @@ -474,29 +487,25 @@ def _cassandra_ensure_keyspace(self, keyspace_name, cf_info_list):

gc_grace_sec = CASSANDRA_DEFAULT_GC_GRACE_SECONDS

for cf_info in cf_info_list:
for cf_name in cf_dict:
create_cf_kwargs = cf_dict[cf_name].get('create_cf_args', {})
try:
(cf_name, comparator_type) = cf_info
if comparator_type:
self.sys_mgr.create_column_family(
keyspace_name, cf_name,
comparator_type=comparator_type,
gc_grace_seconds=gc_grace_sec,
default_validation_class='UTF8Type')
else:
self.sys_mgr.create_column_family(keyspace_name, cf_name,
gc_grace_seconds=gc_grace_sec,
default_validation_class='UTF8Type')
self.sys_mgr.create_column_family(
keyspace_name, cf_name,
gc_grace_seconds=gc_grace_sec,
default_validation_class='UTF8Type',
**create_cf_kwargs)
except pycassa.cassandra.ttypes.InvalidRequestException as e:
# TODO verify only EEXISTS
self._logger("Warning! " + str(e), level=SandeshLevel.SYS_WARN)
self.sys_mgr.alter_column_family(keyspace_name, cf_name,
gc_grace_seconds=gc_grace_sec,
default_validation_class='UTF8Type')
default_validation_class='UTF8Type',
**create_cf_kwargs)
# end _cassandra_ensure_keyspace

def _cassandra_init_conn_pools(self):
for ks,cf_list in itertools.chain(self._rw_keyspaces.items(),
for ks,cf_dict in itertools.chain(self._rw_keyspaces.items(),
self._ro_keyspaces.items()):
keyspace = '%s%s' %(self._db_prefix, ks)
pool = pycassa.ConnectionPool(
Expand All @@ -507,11 +516,13 @@ def _cassandra_init_conn_pools(self):
rd_consistency = pycassa.cassandra.ttypes.ConsistencyLevel.QUORUM
wr_consistency = pycassa.cassandra.ttypes.ConsistencyLevel.QUORUM

for (cf, _) in cf_list:
self._cf_dict[cf] = ColumnFamily(
pool, cf, read_consistency_level=rd_consistency,
for cf_name in cf_dict:
cf_kwargs = cf_dict[cf_name].get('cf_args', {})
self._cf_dict[cf_name] = ColumnFamily(
pool, cf_name, read_consistency_level=rd_consistency,
write_consistency_level=wr_consistency,
dict_class=dict)
dict_class=dict,
**cf_kwargs)

ConnectionState.update(conn_type = ConnType.DATABASE,
name = 'Cassandra', status = ConnectionStatus.UP, message = '',
Expand Down
4 changes: 2 additions & 2 deletions src/config/device-manager/device_manager/db.py
Expand Up @@ -1335,8 +1335,8 @@ def __init__(self, manager, zkclient):
self._args = manager._args

keyspaces = {
self._KEYSPACE: [(self._PR_VN_IP_CF, None),
(self._PNF_RESOURCE_CF, None)]}
self._KEYSPACE: {self._PR_VN_IP_CF: {},
self._PNF_RESOURCE_CF: {}}}

cass_server_list = self._args.cassandra_server_list
cred = None
Expand Down
8 changes: 4 additions & 4 deletions src/config/schema-transformer/db.py
Expand Up @@ -54,10 +54,10 @@ def __init__(self, manager, zkclient):
self._zk_path_pfx = ''

keyspaces = {
self._KEYSPACE: [(self._RT_CF, None),
(self._SC_IP_CF, None),
(self._SERVICE_CHAIN_CF, None),
(self._SERVICE_CHAIN_UUID_CF, None)]}
self._KEYSPACE: {self._RT_CF: {},
self._SC_IP_CF: {},
self._SERVICE_CHAIN_CF: {},
self._SERVICE_CHAIN_UUID_CF: {}}}
cass_server_list = self._args.cassandra_server_list

cred = None
Expand Down
8 changes: 4 additions & 4 deletions src/config/svc-monitor/svc_monitor/db.py
Expand Up @@ -22,10 +22,10 @@ def __init__(self, args, logger):
self._db_logger = logger

keyspaces = {
self._KEYSPACE: [
(self._SVC_SI_CF, None),
(self._LB_CF, None)
]
self._KEYSPACE: {
self._SVC_SI_CF: {},
self._LB_CF: {}
}
}

cred = None
Expand Down
11 changes: 8 additions & 3 deletions src/discovery/disc_cassdb.py
Expand Up @@ -39,9 +39,14 @@ def __init__(self, module, cass_srv_list, config_log, reset_config=False,
}

keyspaces = {
self._DISCOVERY_KEYSPACE_NAME: [
(self._DISCOVERY_CF_NAME, CompositeType(AsciiType(), UTF8Type(), UTF8Type()))
]
self._DISCOVERY_KEYSPACE_NAME: {
self._DISCOVERY_CF_NAME: {
'create_cf_args': {
'comparator_type': CompositeType(
AsciiType(), UTF8Type(), UTF8Type())
}
}
}
}

super(DiscoveryCassandraClient, self).__init__(
Expand Down

0 comments on commit 2dc76b3

Please sign in to comment.