You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "lujie (JIRA)" <ji...@apache.org> on 2018/04/15 07:51:00 UTC

[jira] [Created] (CASSANDRA-14385) Fix Some Potential NPE

lujie created CASSANDRA-14385:
---------------------------------

             Summary: Fix Some Potential NPE 
                 Key: CASSANDRA-14385
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14385
             Project: Cassandra
          Issue Type: Bug
            Reporter: lujie


We have developed a static analysis tool [NPEDetector|https://github.com/lujiefsi/NPEDetector] to find some potential NPE. Our analysis shows that some callees may return null in corner case(e.g. node crash , IO exception), some of their callers have  _!=null_ check but some do not have. In this issue we post a patch which can add  !=null  based on existed !=null  check. For example:

Calle Schema#getView may return null:

 
{code:java}
public ViewMetadata getView(String keyspaceName, String viewName)
{
assert keyspaceName != null;
KeyspaceMetadata ksm = keyspaces.getNullable(keyspaceName);
return (ksm == null) ? null : ksm.views.getNullable(viewName);
}
{code}
 it have 4 callers, 3 of them have !=null check, like

its caller MigrationManager#announceViewDrop have \!=null check()

 

 
{code:java}
public static void announceViewDrop(String ksName, String viewName, boolean announceLocally) throws ConfigurationException
{
ViewMetadata view = Schema.instance.getView(ksName, viewName);
if (view == null)
throw new ConfigurationException(String.format("Cannot drop non existing materialized view '%s' in keyspace '%s'.", viewName, ksName));
KeyspaceMetadata ksm = Schema.instance.getKeyspaceMetadata(ksName);

logger.info("Drop table '{}/{}'", view.keyspace, view.name);
announce(SchemaKeyspace.makeDropViewMutation(ksm, view, FBUtilities.timestampMicros()), announceLocally);
}
{code}
but caller MigrationManager#announceMigration does not have 

We add \!=null check based on MigrationManager#announceViewDrop:
{code:java}
if (current == null)
throw new InvalidRequestException("There is no materialized view in keyspace " + keyspace());
{code}
But due to we are not very  familiar with CASSANDRA, hope some expert can review it. Thanks!!!!

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org