[ 
https://issues.apache.org/jira/browse/BROOKLYN-130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Kennedy resolved BROOKLYN-130.
-------------------------------------
       Resolution: Fixed
    Fix Version/s: 0.7.0-SNAPSHOT

Fixed by merge of https://github.com/apache/incubator-brooklyn/pull/480

> Available port detection does not release ports
> -----------------------------------------------
>
>                 Key: BROOKLYN-130
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-130
>             Project: Brooklyn
>          Issue Type: Bug
>    Affects Versions: 0.7.0-M2
>            Reporter: Matthew Champion
>            Assignee: Andrew Kennedy
>            Priority: Minor
>             Fix For: 0.7.0-SNAPSHOT
>
>
> While build Brooklyn I have encountered an exception in one of the tests.
> java.rmi.server.ExportException: Port already in use: 40127; nested exception 
> is: 
>       java.net.BindException: Address already in use
>       at java.net.PlainSocketImpl.socketBind(Native Method)
>       at 
> java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
>       at java.net.ServerSocket.bind(ServerSocket.java:376)
>       at java.net.ServerSocket.<init>(ServerSocket.java:237)
>       at java.net.ServerSocket.<init>(ServerSocket.java:128)
>       at 
> sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45)
>       at 
> sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(RMIMasterSocketFactory.java:349)
>       at 
> sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:667)
>       at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:317)
>       at 
> sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:236)
>       at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
>       at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
>       at 
> sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:207)
>       at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:122)
>       at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:108)
>       at 
> java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203)
>       at mx4j.tools.naming.NamingService.start(NamingService.java:67)
>       at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:601)
>       at 
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:111)
>       at 
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:45)
>       at 
> com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:235)
>       at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
>       at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
>       at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
>       at 
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:792)
>       at 
> javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:305)
>       at com.sun.proxy.$Proxy41.start(Unknown Source)
>       at brooklyn.test.JmxService.<init>(JmxService.java:106)
>       at brooklyn.test.JmxService.<init>(JmxService.java:80)
>       at brooklyn.event.feed.jmx.JmxFeedTest.setUp(JmxFeedTest.java:140)
> The port 40127 is being returned by 
> LocalhostMachineProvisioningLocation.obtainPort(..) which calls through 
> several layers to Networking.isPortAvailable(..). This checks if the port is 
> free but appears not to release the port. This appears to be related to 
> socket.setReuseAddress(..) being called after binding the socket. The 
> documentation requires it to be called before.
> Also an off by one error in Networking.nextAvailablePort(). The last value it 
> passes to Networking.isPortAvailable(..) is MAX_PORT_NUMBER + 1.



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

Reply via email to