[ 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)