[ 
https://issues.apache.org/jira/browse/CASSANDRA-5668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13690403#comment-13690403
 ] 

Ryan McGuire commented on CASSANDRA-5668:
-----------------------------------------

The NullPointerException is gone, however, I see an unexpected change in the 
trace after this commit.

Prior to the patch, I do this:
{code}
$ ccm create 5668
Current cluster is now: 5668
$ ccm populate -n 2:2
$ ccm start
$ ccm node1 cqlsh
Connected to 5668 at 127.0.0.1:9160.
[cqlsh 4.0.0 | Cassandra 2.0-SNAPSHOT | CQL spec 3.1.0 | Thrift protocol 
19.37.0]
Use HELP for help.
cqlsh> CREATE KEYSPACE test WITH replication = {'class': 
'NetworkTopologyStrategy', 'dc1':2, 'dc2':2};
cqlsh> CREATE TABLE test.test (id int PRIMARY KEY, value text);
cqlsh> tracing on;
Now tracing requests.
cqlsh> INSERT INTO test.test (id, value) VALUES ( 5, 'asdf');

Tracing session: 5d3bdaa0-da87-11e2-9eaa-35db2404c433

 activity                                                       | timestamp    
| source    | source_elapsed
----------------------------------------------------------------+--------------+-----------+----------------
                                             execute_cql3_query | 11:29:29,423 
| 127.0.0.1 |              0
 Parsing INSERT INTO test.test (id, value) VALUES ( 5, 'asdf'); | 11:29:29,424 
| 127.0.0.1 |           1082
                                             Peparing statement | 11:29:29,425 
| 127.0.0.1 |           2241
                              Determining replicas for mutation | 11:29:29,425 
| 127.0.0.1 |           2617
                                  Sending message to /127.0.0.2 | 11:29:29,432 
| 127.0.0.1 |           9321
                                 Acquiring switchLock read lock | 11:29:29,433 
| 127.0.0.1 |          10376
                                         Appending to commitlog | 11:29:29,433 
| 127.0.0.1 |          10424
                                        Adding to test memtable | 11:29:29,433 
| 127.0.0.1 |          10544
                                  Sending message to /127.0.0.3 | 11:29:29,435 
| 127.0.0.1 |          12658
                               Message received from /127.0.0.1 | 11:29:29,436 
| 127.0.0.2 |            102
                               Message received from /127.0.0.1 | 11:29:29,438 
| 127.0.0.3 |            103
                        Enqueuing forwarded write to /127.0.0.4 | 11:29:29,441 
| 127.0.0.3 |           3596
                                 Acquiring switchLock read lock | 11:29:29,441 
| 127.0.0.3 |           3686
                                         Appending to commitlog | 11:29:29,441 
| 127.0.0.3 |           3704
                                 Acquiring switchLock read lock | 11:29:29,442 
| 127.0.0.2 |           5768
                                        Adding to test memtable | 11:29:29,442 
| 127.0.0.3 |           3759
                                         Appending to commitlog | 11:29:29,442 
| 127.0.0.2 |           5821
                                  Sending message to /127.0.0.4 | 11:29:29,442 
| 127.0.0.3 |           3834
                                        Adding to test memtable | 11:29:29,442 
| 127.0.0.2 |           5896
                               Enqueuing response to /127.0.0.1 | 11:29:29,442 
| 127.0.0.3 |           4307
                               Enqueuing response to /127.0.0.1 | 11:29:29,443 
| 127.0.0.2 |           6602
                               Message received from /127.0.0.3 | 11:29:29,444 
| 127.0.0.4 |             92
                                  Sending message to /127.0.0.1 | 11:29:29,444 
| 127.0.0.2 |           8037
                               Message received from /127.0.0.2 | 11:29:29,445 
| 127.0.0.1 |             36
                            Processing response from /127.0.0.2 | 11:29:29,445 
| 127.0.0.1 |            147
                                 Acquiring switchLock read lock | 11:29:29,452 
| 127.0.0.4 |           8791
                                         Appending to commitlog | 11:29:29,452 
| 127.0.0.4 |           8835
                                        Adding to test memtable | 11:29:29,452 
| 127.0.0.4 |           8897
                               Enqueuing response to /127.0.0.1 | 11:29:29,453 
| 127.0.0.4 |           9542
                                  Sending message to /127.0.0.1 | 11:29:29,454 
| 127.0.0.4 |          10021
                               Message received from /127.0.0.4 | 11:29:29,454 
| 127.0.0.1 |           9660
                            Processing response from /127.0.0.4 | 11:29:29,455 
| 127.0.0.1 |           9804
                                               Request complete | 11:29:29,435 
| 127.0.0.1 |          12668
{code}

That's a 2x2 multi-dc cluster with a RF of 2 in each dc. I write a single 
INSERT and I see four nodes append to their commit log. All is well.

After the patch, I see this trace:

{code}
Tracing session: c3da4d00-da87-11e2-9a95-35db2404c433

 activity                                                       | timestamp    
| source    | source_elapsed
----------------------------------------------------------------+--------------+-----------+----------------
                                             execute_cql3_query | 11:32:21,587 
| 127.0.0.1 |              0
 Parsing INSERT INTO test.test (id, value) VALUES ( 5, 'asdf'); | 11:32:21,587 
| 127.0.0.1 |            495
                                             Peparing statement | 11:32:21,588 
| 127.0.0.1 |            962
                              Determining replicas for mutation | 11:32:21,588 
| 127.0.0.1 |           1108
                                  Sending message to /127.0.0.2 | 11:32:21,590 
| 127.0.0.1 |           3341
                                  Sending message to /127.0.0.3 | 11:32:21,590 
| 127.0.0.1 |           3920
                               Message received from /127.0.0.1 | 11:32:21,592 
| 127.0.0.2 |             91
                               Message received from /127.0.0.1 | 11:32:21,593 
| 127.0.0.3 |             93
                                 Acquiring switchLock read lock | 11:32:21,593 
| 127.0.0.2 |           1398
                                         Appending to commitlog | 11:32:21,593 
| 127.0.0.2 |           1447
                                        Adding to test memtable | 11:32:21,593 
| 127.0.0.2 |           1517
                        Enqueuing forwarded write to /127.0.0.4 | 11:32:21,594 
| 127.0.0.3 |           1266
                               Enqueuing response to /127.0.0.1 | 11:32:21,594 
| 127.0.0.2 |           2573
                                 Acquiring switchLock read lock | 11:32:21,594 
| 127.0.0.3 |           1343
                                         Appending to commitlog | 11:32:21,594 
| 127.0.0.3 |           1360
                                        Adding to test memtable | 11:32:21,594 
| 127.0.0.3 |           1412
                               Enqueuing response to /127.0.0.1 | 11:32:21,595 
| 127.0.0.3 |           2060
                               Message received from /127.0.0.2 | 11:32:21,595 
| 127.0.0.1 |           null
                                  Sending message to /127.0.0.1 | 11:32:21,595 
| 127.0.0.2 |           2850
                                  Sending message to /127.0.0.1 | 11:32:21,595 
| 127.0.0.3 |           2442
                            Processing response from /127.0.0.2 | 11:32:21,595 
| 127.0.0.1 |           null
                                  Sending message to /127.0.0.4 | 11:32:21,595 
| 127.0.0.3 |           2442
                               Message received from /127.0.0.3 | 11:32:21,595 
| 127.0.0.1 |           null
                            Processing response from /127.0.0.3 | 11:32:21,595 
| 127.0.0.1 |           null
                               Message received from /127.0.0.3 | 11:32:21,597 
| 127.0.0.4 |             95
                                 Acquiring switchLock read lock | 11:32:21,598 
| 127.0.0.4 |           1040
                                         Appending to commitlog | 11:32:21,598 
| 127.0.0.4 |           1087
                                        Adding to test memtable | 11:32:21,598 
| 127.0.0.4 |           1391
                               Enqueuing response to /127.0.0.1 | 11:32:21,599 
| 127.0.0.4 |           1885
                               Message received from /127.0.0.4 | 11:32:21,600 
| 127.0.0.1 |           null
                                  Sending message to /127.0.0.1 | 11:32:21,600 
| 127.0.0.4 |           3290
                            Processing response from /127.0.0.4 | 11:32:21,600 
| 127.0.0.1 |           null
                                               Request complete | 11:32:21,592 
| 127.0.0.1 |           5564
{code}

127.0.0.1 (which also happens to be the coordinator) didn't write anything to 
it's commit log (according to the trace at least). Reproducible on 
cassandra-1.2 and trunk.


                
> NPE in net.OutputTcpConnection when tracing is enabled
> ------------------------------------------------------
>
>                 Key: CASSANDRA-5668
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5668
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.2.6
>            Reporter: Ryan McGuire
>            Assignee: Jonathan Ellis
>             Fix For: 1.2.6
>
>         Attachments: 5668-assert-2.txt, 5668-assert.txt, 5668-followup.txt, 
> 5668-logs.tar.gz, 5668_npe_ddl.cql, 5668_npe_insert.cql, 5668.txt, system.log
>
>
> I get multiple NullPointerException when trying to trace INSERT statements.
> To reproduce:
> {code}
> $ ccm create -v git:trunk
> $ ccm populate -n 3
> $ ccm start
> $ ccm node1 cqlsh < 5668_npe_ddl.cql
> $ ccm node1 cqlsh < 5668_npe_insert.cql
> {code}
> And see many exceptions like this in the logs of node1:
> {code}
> ERROR [WRITE-/127.0.0.3] 2013-06-19 14:54:35,885 OutboundTcpConnection.java 
> (line 197) error writing to /127.0.0.3
> java.lang.NullPointerException
>         at 
> org.apache.cassandra.net.OutboundTcpConnection.writeConnected(OutboundTcpConnection.java:182)
>         at 
> org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:144)
> {code}
> This is similar to CASSANDRA-5658 and is the reason that npe_ddl and 
> npe_insert are separate files.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to