[ 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-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org