[
https://issues.apache.org/jira/browse/CASSANDRA-7626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14078318#comment-14078318
]
Tyler Hobbs commented on CASSANDRA-7626:
----------------------------------------
The microseconds issue comes from CASSANDRA-1337 and the fix for
CASSANDRA-5668. Basically, with 5668, we destroy the trace state for non-local
traces when we send a REQUEST_RESPONSE message. If we perform range slices one
range at a time, this doesn't cause any problems, because the trace state is
rebuilt with each new request for a range. However, post-1337, multiple ranges
will be handled at the same time. When the first range (among many) is
completed, the trace state is destroyed, so there's no trace state for the
other ranges that are being concurrently handled to use.
It seems like the best solution may be to reference count trace states. We can
still release references in the same place (when a REQUEST_RESPONSE is sent).
> Tracing problems with 2.1 cqlsh
> -------------------------------
>
> Key: CASSANDRA-7626
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7626
> Project: Cassandra
> Issue Type: Bug
> Components: Tools
> Reporter: Tyler Hobbs
> Assignee: Tyler Hobbs
> Priority: Minor
> Fix For: 2.1.0
>
>
> If some replicas continue doing work after the coordinator responds to the
> client (e.g. writing at CL.ONE with RF=3), those trace events will not have a
> source_elapsed field, leading to the following error in cqlsh:
> {noformat}
> Traceback (most recent call last):
> File "bin/cqlsh", line 822, in onecmd
> self.handle_statement(st, statementtext)
> File "bin/cqlsh", line 863, in handle_statement
> return self.perform_statement(cqlruleset.cql_extract_orig(tokens, srcstr))
> File "bin/cqlsh", line 898, in perform_statement
> print_trace_session(self, self.session, stmt.trace.trace_id)
> File "/srv/cassandra/bin/../pylib/cqlshlib/tracing.py", line 25, in
> print_trace_session
> rows = fetch_trace_session(trace)
> File "/srv/cassandra/bin/../pylib/cqlshlib/tracing.py", line 54, in
> fetch_trace_session
> event.source_elapsed.microseconds])
> AttributeError: 'NoneType' object has no attribute 'microseconds'
> {noformat}
> If the trace wasn't fully written within the driver's 2 second waiting
> period, you'll get this error:
> {noformat}
> Traceback (most recent call last):
> File "bin/cqlsh", line 822, in onecmd
> self.handle_statement(st, statementtext)
> File "bin/cqlsh", line 863, in handle_statement
> return self.perform_statement(cqlruleset.cql_extract_orig(tokens, srcstr))
> File "bin/cqlsh", line 898, in perform_statement
> print_trace_session(self, self.session, stmt.trace.trace_id)
> AttributeError: 'NoneType' object has no attribute 'trace_id'
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)