[ https://issues.apache.org/jira/browse/CASSANDRA-13357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16808589#comment-16808589 ]
mck commented on CASSANDRA-13357: --------------------------------- [~haozhong] and [~eduard.tudenhoefner], taking another look at this, the patch was originally correct in only catching an {{IllegalArgumentException}}… The fix in CASSANDRA-8950 included changing {{StorageService}} so that it threw an {{IllegalArgumentException}} instead of the {{NullPointerException}}. See https://github.com/apache/cassandra/commit/37eb2a0e29c22a1b2f033e8191b5808a6f7b0d3f#diff-b76a607445d53f18a98c9df14323c7dd Looking in trunk, {{NodeTool}} already now handles the {{IllegalArgumentException}}, printing it nicely to the user. For example {code} nodetool getendpoints syste loca -7564491331177403445 nodetool: Unknown keyspace 'syste' See 'nodetool help' or 'nodetool help <command>'. {code} If I apply the (originally) patch it changes this to… {code} bash build/dist/bin/nodetool getendpoints syste loca -7564491331177403445 Error: Unknown keyspace 'syste' {code} Given the code works fine as it is, I'm closing the issue as {{won't fix}}. Feel free to comment or re-open if I got it wrong or missed anything. > A possible NPE in nodetool getendpoints > --------------------------------------- > > Key: CASSANDRA-13357 > URL: https://issues.apache.org/jira/browse/CASSANDRA-13357 > Project: Cassandra > Issue Type: Bug > Components: Tool/nodetool > Reporter: Hao Zhong > Assignee: Hao Zhong > Priority: Normal > Fix For: 4.x > > Attachments: cassandra.patch > > > The GetEndpoints.execute method has the following code: > {code:title=GetEndpoints.java|borderStyle=solid} > List<InetAddress> endpoints = probe.getEndpoints(ks, table, key); > for (InetAddress endpoint : endpoints) > { > System.out.println(endpoint.getHostAddress()); > } > {code} > This code can throw NPE. A similar bug is fixed in CASSANDRA-8950. The buggy > code is > {code:title=NodeCmd.java|borderStyle=solid} > List<InetAddress> endpoints = this.probe.getEndpoints(keySpace, cf, key); > for (InetAddress anEndpoint : endpoints) > { > output.println(anEndpoint.getHostAddress()); > } > {code} > The fixed code is: > {code:title=NodeCmd.java|borderStyle=solid} > try > { > List<InetAddress> endpoints = probe.getEndpoints(keySpace, cf, > key); > for (InetAddress anEndpoint : endpoints) > output.println(anEndpoint.getHostAddress()); > } > catch (IllegalArgumentException ex) > { > output.println(ex.getMessage()); > probe.failed(); > } > {code} > The GetEndpoints.execute method shall be modified as CASSANDRA-8950 does. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org