Evict cached UDT class when new type is registered.
This commit is contained in:
@@ -47,6 +47,7 @@ from cassandra import (ConsistencyLevel, AuthenticationFailed,
|
|||||||
UnsupportedOperation, Unauthorized)
|
UnsupportedOperation, Unauthorized)
|
||||||
from cassandra.connection import (ConnectionException, ConnectionShutdown,
|
from cassandra.connection import (ConnectionException, ConnectionShutdown,
|
||||||
ConnectionHeartbeat)
|
ConnectionHeartbeat)
|
||||||
|
from cassandra.cqltypes import UserType
|
||||||
from cassandra.encoder import Encoder
|
from cassandra.encoder import Encoder
|
||||||
from cassandra.protocol import (QueryMessage, ResultMessage,
|
from cassandra.protocol import (QueryMessage, ResultMessage,
|
||||||
ErrorMessage, ReadTimeoutErrorMessage,
|
ErrorMessage, ReadTimeoutErrorMessage,
|
||||||
@@ -615,6 +616,7 @@ class Cluster(object):
|
|||||||
self._user_types[keyspace][user_type] = klass
|
self._user_types[keyspace][user_type] = klass
|
||||||
for session in self.sessions:
|
for session in self.sessions:
|
||||||
session.user_type_registered(keyspace, user_type, klass)
|
session.user_type_registered(keyspace, user_type, klass)
|
||||||
|
UserType.evict_udt_class(keyspace, user_type)
|
||||||
|
|
||||||
def get_min_requests_per_connection(self, host_distance):
|
def get_min_requests_per_connection(self, host_distance):
|
||||||
return self._min_requests_per_connection[host_distance]
|
return self._min_requests_per_connection[host_distance]
|
||||||
|
|||||||
@@ -899,6 +899,15 @@ class UserType(TupleType):
|
|||||||
cls._cache[(keyspace, udt_name)] = instance
|
cls._cache[(keyspace, udt_name)] = instance
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def evict_udt_class(cls, keyspace, udt_name):
|
||||||
|
if six.PY2 and isinstance(udt_name, unicode):
|
||||||
|
udt_name = udt_name.encode('utf-8')
|
||||||
|
try:
|
||||||
|
del cls._cache[(keyspace, udt_name)]
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def apply_parameters(cls, subtypes, names):
|
def apply_parameters(cls, subtypes, names):
|
||||||
keyspace = subtypes[0]
|
keyspace = subtypes[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user