cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carl Yeksigian (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-8839) DatabaseDescriptor throws NPE when rpc_interface is used
Date Fri, 13 Mar 2015 19:42:38 GMT

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

Carl Yeksigian commented on CASSANDRA-8839:
-------------------------------------------

The changes to select the interface, as well as the test looks good.

For the IPv6 changes, I think it would make sense to use the option {{-Djava.net.preferIPv4Stack}}
instead. I tried that with the unit tests, and they succeeded without having to worry about
IPv4 and v6 addresses. There is [an issue|https://github.com/netty/netty/pull/3473] with Netty
and that flag, but if we are specifying the address already, we probably won't hit it.

Also, when testing the class we get for {{InetAddress}}, I think it would be better to use
{{instanceof}}.

> DatabaseDescriptor throws NPE when rpc_interface is used
> --------------------------------------------------------
>
>                 Key: CASSANDRA-8839
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8839
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Config
>         Environment: 2.1.3
>            Reporter: Jan Kesten
>            Assignee: Ariel Weisberg
>             Fix For: 2.1.4
>
>
> Copy from mail to dev mailinglist. 
> When using
> - listen_interface instead of listen_address
> - rpc_interface instead of rpc_address
> starting 2.1.3 throws an NPE:
> {code}
> ERROR [main] 2015-02-20 07:50:09,661 DatabaseDescriptor.java:144 - Fatal error during
configuration loading
> java.lang.NullPointerException: null
>         at org.apache.cassandra.config.DatabaseDescriptor.applyConfig(DatabaseDescriptor.java:411)
~[apache-cassandra-2.1.3.jar:2.1.3]
>         at org.apache.cassandra.config.DatabaseDescriptor.<clinit>(DatabaseDescriptor.java:133)
~[apache-cassandra-2.1.3.jar:2.1.3]
>         at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:110)
[apache-cassandra-2.1.3.jar:2.1.3]
>         at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:465)
[apache-cassandra-2.1.3.jar:2.1.3]
>         at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:554)
[apache-cassandra-2.1.3.jar:2.1.3]
> {code}
> Occurs on debian package as well as in tar.gz distribution. 
> {code}
> /* Local IP, hostname or interface to bind RPC server to */
> if(conf.rpc_address !=null&& conf.rpc_interface !=null)
> {
>     throw newConfigurationException("Set rpc_address OR rpc_interface, not both");
> }
> else if(conf.rpc_address !=null)
> {
>     try
>     {
>         rpcAddress = InetAddress.getByName(conf.rpc_address);
>     }
>     catch(UnknownHostException e)
>     {
>         throw newConfigurationException("Unknown host in rpc_address "+ conf.rpc_address);
>     }
> }
> else if(conf.rpc_interface !=null)
> {
>     listenAddress = getNetworkInterfaceAddress(conf.rpc_interface,"rpc_interface");
> }
> else
> {
>     rpcAddress = FBUtilities.getLocalAddress();
> }
> {code}
> I think that listenAddress in the second else block is an error. In my case rpc_interface
is eth0, so listenAddress gets set, and rpcAddress remains unset. The result is NPE in line
411:
> {code}
> if(rpcAddress.isAnyLocalAddress())
> {code}
> After changing rpc_interface to rpc_address everything works as expected.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message