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

Michael Shuler edited comment on CASSANDRA-11540 at 5/5/16 10:56 PM:
---------------------------------------------------------------------

Just a quick note on behavior after this commit, as we have found in cstar_perf 
(trunk will not start at all, currently).

If a user happens to set an environment variable {{JVM_OPTS="$JVM_OPTS 
-Dcom.sun.management.jmxremote.port=7199 ..."}} startup fails. There's no other 
Cassandra running and nothing was listening to 7199 prior to startup.

I believe that commit 7b0c716 introduced for CASSANDRA-10091 does something a 
little wonky with regards to JVM_OPTS. The previous commit, ad7e36b, does not 
throw an error when JVM_OPTS are passed in the user env.

If this hard failure is working as intended, please let me know!

Repro on trunk HEAD:
{noformat}
(trunk)mshuler@mana:~/git/cassandra$ sudo netstat -atunp | grep 7199
(trunk)mshuler@mana:~/git/cassandra$
(trunk)mshuler@mana:~/git/cassandra$ export 
JVM_OPTS="-Dcom.sun.management.jmxremote.port=7199 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=127.0.0.1"
(trunk)mshuler@mana:~/git/cassandra$ 
(trunk)mshuler@mana:~/git/cassandra$ cassandra -f
<...>
INFO  22:00:18 Not submitting build tasks for views in keyspace system as 
storage service is not initialized
ERROR 22:00:18 Port already in use: 7199; nested exception is: 
        java.net.BindException: Address already in use
java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_92]
        at 
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) 
~[na:1.8.0_92]
        at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_92]
        at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_92]
        at 
javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
 ~[na:1.8.0_92]
        at 
org.apache.cassandra.utils.RMIServerSocketFactoryImpl.createServerSocket(RMIServerSocketFactoryImpl.java:21)
 ~[main/:na]
        at 
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) 
~[na:1.8.0_92]
        at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330) 
~[na:1.8.0_92]
        at 
sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249) 
~[na:1.8.0_92]
        at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) 
~[na:1.8.0_92]
        at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) 
~[na:1.8.0_92]
        at 
sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:212) 
~[na:1.8.0_92]
        at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:152) 
~[na:1.8.0_92]
        at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:112) 
~[na:1.8.0_92]
        at 
java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) 
~[na:1.8.0_92]
        at 
org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:94)
 ~[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:124)
 [main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:193) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:568) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:697) 
[main/:na]
(trunk)mshuler@mana:~/git/cassandra$
{noformat}


was (Author: mshuler):
Just a quick note on behavior after this commit, as we have found in cstar_perf 
(trunk will not start at all, currently).

If a user happens to set and environment variable {{JVM_OPTS="$JVM_OPTS 
-Dcom.sun.management.jmxremote.port=7199 ..."}} startup fails. There's no other 
Cassandra running and nothing was listening to 7199 prior to startup.

I believe that commit 7b0c716 introduced for CASSANDRA-10091 does something a 
little wonky with regards to JVM_OPTS. The previous commit, ad7e36b, does not 
throw an error when JVM_OPTS are passed in the user env.

If this hard failure is working as intended, please let me know!

Repro on trunk HEAD:
{noformat}
(trunk)mshuler@mana:~/git/cassandra$ sudo netstat -atunp | grep 7199
(trunk)mshuler@mana:~/git/cassandra$
(trunk)mshuler@mana:~/git/cassandra$ export 
JVM_OPTS="-Dcom.sun.management.jmxremote.port=7199 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=127.0.0.1"
(trunk)mshuler@mana:~/git/cassandra$ 
(trunk)mshuler@mana:~/git/cassandra$ cassandra -f
<...>
INFO  22:00:18 Not submitting build tasks for views in keyspace system as 
storage service is not initialized
ERROR 22:00:18 Port already in use: 7199; nested exception is: 
        java.net.BindException: Address already in use
java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_92]
        at 
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) 
~[na:1.8.0_92]
        at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_92]
        at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_92]
        at 
javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
 ~[na:1.8.0_92]
        at 
org.apache.cassandra.utils.RMIServerSocketFactoryImpl.createServerSocket(RMIServerSocketFactoryImpl.java:21)
 ~[main/:na]
        at 
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) 
~[na:1.8.0_92]
        at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330) 
~[na:1.8.0_92]
        at 
sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249) 
~[na:1.8.0_92]
        at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) 
~[na:1.8.0_92]
        at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) 
~[na:1.8.0_92]
        at 
sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:212) 
~[na:1.8.0_92]
        at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:152) 
~[na:1.8.0_92]
        at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:112) 
~[na:1.8.0_92]
        at 
java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) 
~[na:1.8.0_92]
        at 
org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:94)
 ~[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:124)
 [main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:193) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:568) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:697) 
[main/:na]
(trunk)mshuler@mana:~/git/cassandra$
{noformat}

> The JVM should exit if jmx fails to bind
> ----------------------------------------
>
>                 Key: CASSANDRA-11540
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11540
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Brandon Williams
>            Assignee: Alex Petrov
>              Labels: lhf
>             Fix For: 2.2.7, 3.7, 3.0.7
>
>
> If you are already running a cassandra instance, but for some reason try to 
> start another one, this happens:
> {noformat}
> INFO  20:57:09 JNA mlockall successful
> WARN  20:57:09 JMX is not enabled to receive remote connections. Please see 
> cassandra-env.sh for more info.
> ERROR 20:57:10 Error starting local jmx server:
> java.rmi.server.ExportException: Port already in use: 7199; nested exception 
> is:
>         java.net.BindException: Address already in use
>         at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:340) 
> ~[na:1.7.0_76]
>         at 
> sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:248) 
> ~[na:1.7.0_76]
>         at 
> sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) 
> ~[na:1.7.0_76]
>         at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) 
> ~[na:1.7.0_76]
>         at 
> sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:207) 
> ~[na:1.7.0_76]
>         at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:122) 
> ~[na:1.7.0_76]
>         at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:98) 
> ~[na:1.7.0_76]
>         at 
> java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) 
> ~[na:1.7.0_76]
>         at 
> org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:100)
>  [main/:na]
>         at 
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:222) 
> [main/:na]
>         at 
> org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:564)
>  [main/:na]
>         at 
> org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:653) 
> [main/:na]
> Caused by: java.net.BindException: Address already in use
>         at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.7.0_76]
>         at 
> java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) 
> ~[na:1.7.0_76]
>         at java.net.ServerSocket.bind(ServerSocket.java:376) ~[na:1.7.0_76]
>         at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.7.0_76]
>         at 
> javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
>  ~[na:1.7.0_76]
>         at 
> org.apache.cassandra.utils.RMIServerSocketFactoryImpl.createServerSocket(RMIServerSocketFactoryImpl.java:13)
>  ~[main/:na]
>         at 
> sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) 
> ~[na:1.7.0_76]
>         at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:329) 
> ~[na:1.7.0_76]
>         ... 11 common frames omitted
> {noformat}
> However the startup continues, and ends up replaying commitlogs, which is 
> probably not a good thing.



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

Reply via email to