Avoid to acquire the lazy_connect lock if it is not required

This commit is contained in:
Alan Boudreault
2016-02-12 14:03:03 -05:00
parent 9421d36de7
commit 8ea293adb2

View File

@@ -15,7 +15,6 @@
from collections import namedtuple, defaultdict
import logging
import six
from warnings import warn
import threading
from cassandra.cluster import Cluster, _NOT_SET, NoHostAvailable, UserTypeDoesNotExist
@@ -105,14 +104,9 @@ def setup(
:param list hosts: list of hosts, (``contact_points`` for :class:`cassandra.cluster.Cluster`)
:param str default_keyspace: The default keyspace to use
:param int consistency: The global default :class:`~.ConsistencyLevel` - default is the same as :attr:`.Session.default_consistency_level`
:param bool lazy_connect: True if should not connect until first use (Deprecated)
:param bool lazy_connect: True if should not connect until first use
:param bool retry_connect: True if we should retry to connect even if there was a connection failure initially
:param \*\*kwargs: Pass-through keyword arguments for :class:`cassandra.cluster.Cluster`
.. warning ::
lazy_connect is deprecated. It will be removed in 3.3.
"""
global cluster, session, lazy_connect_args
@@ -123,9 +117,6 @@ def setup(
models.DEFAULT_KEYSPACE = default_keyspace
if lazy_connect:
msg = "lazy_connect is deprecated. It will be removed in 3.3."
warn(msg, DeprecationWarning)
log.warning(msg)
kwargs['default_keyspace'] = default_keyspace
kwargs['consistency'] = consistency
kwargs['lazy_connect'] = False
@@ -199,12 +190,20 @@ def get_cluster():
def handle_lazy_connect():
global lazy_connect_args
# if lazy_connect_args is None, it means the cluster is setup and ready
# No need to acquire the lock
if not lazy_connect_args:
return
with lazy_connect_lock:
# lazy_connect_args might have been set to None by another thread while waiting the lock
# In this case, do nothing.
if lazy_connect_args:
log.debug("lazy connect")
hosts, kwargs = lazy_connect_args
lazy_connect_args = None
setup(hosts, **kwargs)
lazy_connect_args = None
def register_udt(keyspace, type_name, klass):