Skip to content

Commit 59cec4c

Browse files
committed
perf: skip redundant __init__ assignments and remove dead attributes in ResponseFuture
- Remove 3 dead class attributes (default_timeout, _profile_manager, _warned_timeout) that were never read or written on ResponseFuture - Add prepared_statement and _continuous_paging_state as class-level defaults (both None), skip __init__ assignment when parameter is None - Conditionalize _metrics and _host assignments: only set when non-None - Saves 4 STORE_ATTR operations per query on the common path (simple statements, no metrics, no host targeting, no continuous paging)
1 parent 8e6c4d4 commit 59cec4c

1 file changed

Lines changed: 10 additions & 8 deletions

File tree

cassandra/cluster.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4413,10 +4413,9 @@ class ResponseFuture(object):
44134413
session = None
44144414
row_factory = None
44154415
message = None
4416-
default_timeout = None
4416+
prepared_statement = None
44174417

44184418
_retry_policy = None
4419-
_profile_manager = None
44204419

44214420
_req_id = None
44224421
_final_result = _NOT_SET
@@ -4439,10 +4438,9 @@ class ResponseFuture(object):
44394438
_spec_execution_plan = NoSpeculativeExecutionPlan()
44404439
_continuous_paging_session = None
44414440
_host = None
4441+
_continuous_paging_state = None
44424442
_TABLET_ROUTING_CTYPE = None
44434443

4444-
_warned_timeout = False
4445-
44464444
def __init__(self, session, message, query, timeout, metrics=None, prepared_statement=None,
44474445
retry_policy=RetryPolicy(), row_factory=None, load_balancer=None, start_time=None,
44484446
speculative_execution_plan=None, continuous_paging_state=None, host=None):
@@ -4454,11 +4452,14 @@ def __init__(self, session, message, query, timeout, metrics=None, prepared_stat
44544452
self.query = query
44554453
self.timeout = timeout
44564454
self._retry_policy = retry_policy
4457-
self._metrics = metrics
4458-
self.prepared_statement = prepared_statement
4455+
if metrics is not None:
4456+
self._metrics = metrics
4457+
if prepared_statement is not None:
4458+
self.prepared_statement = prepared_statement
44594459
self._callback_lock = Lock()
44604460
self._start_time = start_time or time.time()
4461-
self._host = host
4461+
if host is not None:
4462+
self._host = host
44624463
self._spec_execution_plan = speculative_execution_plan or self._spec_execution_plan
44634464
self._make_query_plan()
44644465
self._event = Event()
@@ -4467,7 +4468,8 @@ def __init__(self, session, message, query, timeout, metrics=None, prepared_stat
44674468
self._errbacks = []
44684469
self.attempted_hosts = []
44694470
self._start_timer()
4470-
self._continuous_paging_state = continuous_paging_state
4471+
if continuous_paging_state is not None:
4472+
self._continuous_paging_state = continuous_paging_state
44714473

44724474
@property
44734475
def _time_remaining(self):

0 commit comments

Comments
 (0)