cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ariel Weisberg (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-8839) DatabaseDescriptor throws NPE when rpc_interface is used
Date Tue, 17 Mar 2015 16:34:39 GMT

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

Ariel Weisberg commented on CASSANDRA-8839:
-------------------------------------------

-Djava.net.preferIPv4Stack is all or nothing and I think we should provide mechanism not policy.
When I just tested it matters whether you select IPv4 or IPv6 addresses for an interface and
there is no transparent automatic routing of incoming connections between them.

I just don't want to end up in a scenario where people go to deploy in networking environments
they don't have complete control over and they can't make it work without unnecessary platform
specific friction. It's not a lot of code to implement preferring the ipv6 vs ipv4 stack for
rpc and listen interface.

I am still open to not adding the config it's just not my preference. The change in behavior
would then be that when we are provided with an interface we bind to the first addressed provided
by the JVM in the enumeration and ignore the others.

> 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