[ https://issues.apache.org/jira/browse/ZOOKEEPER-3010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
lujie updated ZOOKEEPER-3010: ----------------------------- Description: After ZK-3006 , I develop a simple static analysis tool to find other Potential NPE like ZK-3006. This bug is found by this tool , I carefully studied it, but i am a newbie here so i may be wrong, hopefully someone can confirm this bug and help me improve this tool. h2. Bug description: callee Learner#findLeader will return null and callee developer check it but just log: {code:java} // code placeholder if (leaderServer == null) { LOG.warn("Couldn't find the leader with id = " + current.getId()); } return leaderServer; {code} caller Observer#observeLeader and Follower#followLeader will directly use return value w/o null check: {code:java} //Follower#followLeader QuorumServer leaderServer = findLeader(); try { connectToLeader(leaderServer.addr, leaderServer.hostname); .......... } //Observer#observeLeader QuorumServer leaderServer = findLeader(); LOG.info("Observing " + leaderServer.addr); try { connectToLeader(leaderServer.addr, leaderServer.hostname); }{code} was: After ZK-3006 , I develop a very simple static analysis tool to find other Potential NPE like ZK-3006. This bug is found by this tool , I carefully studied it, but i am a newbie here so i may be wrong, hopefully someone can confirm this bug and help me improve this tool. h2. Bug description: callee Learner#findLeader will return null and callee developer check it but just log: {code:java} // code placeholder if (leaderServer == null) { LOG.warn("Couldn't find the leader with id = " + current.getId()); } return leaderServer; {code} caller Observer#observeLeader and Follower#followLeader will directly use return value w/o null check: {code:java} //Follower#followLeader QuorumServer leaderServer = findLeader(); try { connectToLeader(leaderServer.addr, leaderServer.hostname); .......... } //Observer#observeLeader QuorumServer leaderServer = findLeader(); LOG.info("Observing " + leaderServer.addr); try { connectToLeader(leaderServer.addr, leaderServer.hostname); }{code} > Potential NPE in Observer#observeLeader and Follower#followLeader > ----------------------------------------------------------------- > > Key: ZOOKEEPER-3010 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3010 > Project: ZooKeeper > Issue Type: Bug > Affects Versions: 3.6.0 > Environment: > > Reporter: lujie > Priority: Major > > After ZK-3006 , I develop a simple static analysis tool to find other > Potential NPE like ZK-3006. This bug is found by this tool , I carefully > studied it, but i am a newbie here so i may be wrong, hopefully someone can > confirm this bug and help me improve this tool. > h2. Bug description: > callee Learner#findLeader will return null and callee developer check it but > just log: > {code:java} > // code placeholder > if (leaderServer == null) { > LOG.warn("Couldn't find the leader with id = " + current.getId()); > } > return leaderServer; > {code} > caller Observer#observeLeader and Follower#followLeader will directly use > return value w/o null check: > {code:java} > //Follower#followLeader > QuorumServer leaderServer = findLeader(); > try { > connectToLeader(leaderServer.addr, leaderServer.hostname); > .......... > } > //Observer#observeLeader > QuorumServer leaderServer = findLeader(); > LOG.info("Observing " + leaderServer.addr); > try { > connectToLeader(leaderServer.addr, leaderServer.hostname); > }{code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)