You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2021/02/12 02:54:00 UTC

[jira] [Commented] (ARTEMIS-2931) Potential null pointer access at several places

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

ASF subversion and git services commented on ARTEMIS-2931:
----------------------------------------------------------

Commit a75dce9577cc4a2fa4ff10fcc7f4e0ab4ee8242e in activemq-artemis's branch refs/heads/master from Petr Kužel
[ https://gitbox.apache.org/repos/asf?p=activemq-artemis.git;h=a75dce9 ]

ARTEMIS-2931: Resolving potential NPEs detected by eclipse

WARNING: the eclipse static analyser is pretty limited and it cannot cope with cases like: correlated variables, exception paths, .... 70% of eclipse warnings on artemis codebase is a false alarm.

Anyway some variable correlations can be eliminated and code becomes more readable for humans too.

For "never-throws", the assumption is made explicit. If you disagree with the reverse-engineered assumption then it is likely an indication of a true potential NPE.

Last but not least, copy&paste is a common source of bugs. I suspect eclipse indirectly detected one such case.

Hope it helps


>  Potential null pointer access at several places
> ------------------------------------------------
>
>                 Key: ARTEMIS-2931
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2931
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>            Reporter: Petr Kuzel
>            Priority: Major
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> Open the artemis-server project in Eclipse. Static analysis reports numerous Potential null pointer access. Looking at an example, the static analyzer is correct.
> ReplicationEndpoint:
> {code:java}
>    public void setChannel(final Channel channel) {
>       this.channel = channel;
>       if (channel == null) {
>          supportResponseBatching = false;
>       } else {
>          try {
>             final CoreRemotingConnection connection = channel.getConnection();
>             if (connection != null) {
>                this.supportResponseBatching = connection.getTransportConnection() instanceof NettyConnection;
>             } else {
>                this.supportResponseBatching = false;
>             }
>          } catch (Throwable t) {
>             logger.warn("Error while checking the channel connection", t);
>             this.supportResponseBatching = false;
>          }
>       }      if (this.channel != null && outgoingInterceptors != null) {
>          if (channel.getConnection() instanceof RemotingConnectionImpl)  { // NPE risk
> {code}
> line 392 the channel can be null.
> line 409 for unknown reason assumes the channel is never null.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)