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

Tyler Hobbs commented on CASSANDRA-12074:
-----------------------------------------

Awesome, it looks like even with an older java 8 (1.8.0u20), the error message 
is good:

{noformat}
ERROR 16:26:46 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_20]
        at 
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) 
~[na:1.8.0_20]
        at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_20]
        at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_20]
        at 
javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
 ~[na:1.8.0_20]
        at 
org.apache.cassandra.utils.RMIServerSocketFactoryImpl.createServerSocket(RMIServerSocketFactoryImpl.java:41)
 ~[main/:na]
        at 
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) 
~[na:1.8.0_20]
        at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:319) 
~[na:1.8.0_20]
        at 
sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:238) 
~[na:1.8.0_20]
        at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) 
~[na:1.8.0_20]
        at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) 
~[na:1.8.0_20]
        at 
sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:208) 
~[na:1.8.0_20]
        at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:152) 
~[na:1.8.0_20]
        at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:112) 
~[na:1.8.0_20]
        at 
java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) 
~[na:1.8.0_20]
        at 
org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:80)
 ~[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:137)
 [main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:212) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:587) 
[main/:na]
        at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:716) 
[main/:na]
{noformat}

So, I've pushed another commit to the branch that simply removes the 
pre-startup check and started a new dtest run.  Thanks to [~cnlwsu] for 
mentioning CASSANDRA-10091 to me.

> Faster check for open JMX port on startup
> -----------------------------------------
>
>                 Key: CASSANDRA-12074
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12074
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Lifecycle
>            Reporter: Tyler Hobbs
>            Assignee: Tyler Hobbs
>            Priority: Minor
>             Fix For: 3.x
>
>
> Since CASSANDRA-7254, we check whether the JMX port is available before 
> starting Cassandra in order to provide a better error message when another 
> Cassandra process is already running.  The current check starts a Java 
> process to do this, which takes ~3 seconds.  Instead, we can use {{lsof}}, 
> which is basically instantaneous.
> By my estimate, this will shave about 40 minutes off our dtest runs.



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

Reply via email to