You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Aleksei Zotov (Jira)" <ji...@apache.org> on 2021/09/17 12:19:00 UTC

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

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

Aleksei Zotov commented on CASSANDRA-14385:
-------------------------------------------

Hi [~xiaoheipangzi]!

I'm sorry that you got no reply for a long time! There was harsh time related to 4.0 release. But currently the community is trying to check the tickets that were left without proper attention.

There is a conflict, so your PR needs to be updated with the recent changes. Also I skimmed trough your changes and put a couple of comments. Please, let us know whether you still feel the ticket is actual and you want to continue the work.

I will move the ticket back to {{Open}} feel free to move it back to {{Patch Available}} after rebase.

Thanks for your work and welcome to the community!

 

PS:

I'm not a project committer, I'm just an enthusiast like you who is hanging around the project.

cc: [~blerer]

 

> Fix Some Potential NPE 
> -----------------------
>
>                 Key: CASSANDRA-14385
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14385
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Feature/Materialized Views
>            Reporter: lujie
>            Priority: Normal
>         Attachments: CA-14385_1.patch
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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);//may return null
> }
> {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)//null pointer checker
>         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
(v8.3.4#803005)

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