reef-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gyewon Lee <strayyy...@gmail.com>
Subject Re: Sharing Wake LocalAddressProvider issue
Date Mon, 05 Jun 2017 12:55:34 GMT
Hi.

Thank you for reporting this issue - it seems that some people using Mac
experienced this issue before. Is there anyone who experienced this issue
on Linux or Windows?

In my humble opinion, it would better to fix LocalAddressProvider than
using LegacyLocalAdressProvider. Could you report this issue through JIRA?

Thanks!
Gyewon

2017-06-05 18:44 GMT+09:00 이산하 <sanhaleehana@gmail.com>:

> Hello reefers,
>
> I'd like to share an issue related with Wake I've experienced, and seek
> your opinion.
> I'm working on a project that runs on REEF, and it occasionally spitted
> some exception saying there is no available TCP port. Full message was like
> below.
>
> Caused by: java.lang.RuntimeException:
> org.apache.reef.tang.exceptions.InjectionException: Could not invoke
> constructor: new NettyMessagingTransport(String HostAddress =
> ##UNKNOWN##, Integer Port = 0, EStage RemoteClientStage =
> org.apache.reef.wake.remote.impl.OrderedRemoteReceiverStage@47523643,
> EStage RemoteServerStage =
> org.apache.reef.wake.remote.impl.OrderedRemoteReceiverStage@47523643,
> Integer NumberOfTries = 3, Integer RetryTimeout = 10000,
> [ClassNodeImpl 'org.apache.reef.wake.remote.ports.TcpPortProvider']:
> = RangeTcpPortProvider{portRangeBegin=10000, portRangeCount=10000,
> portRangeTryCount=1000}, LocalAddressProvider = new
> HostnameBasedLocalAddressProvider())
>         at org.apache.reef.wake.remote.transport.netty.
> MessagingTransportFactory.newInstance(MessagingTransportFactory.java:135)
>         at org.apache.reef.wake.remote.impl.DefaultRemoteManagerImplementa
> tion.<init>(DefaultRemoteManagerImplementation.java:89)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> NativeConstructorAccessorImpl.java:62)
>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>         at org.apache.reef.tang.implementation.java.
> InjectorImpl.injectFromPlan(InjectorImpl.java:637)
>         ... 50 more
> Caused by: org.apache.reef.tang.exceptions.InjectionException: Could
> not invoke constructor: new NettyMessagingTransport(String HostAddress
> = ##UNKNOWN##, Integer Port = 0, EStage RemoteClientStage =
> org.apache.reef.wake.remote.impl.OrderedRemoteReceiverStage@47523643,
> EStage RemoteServerStage =
> org.apache.reef.wake.remote.impl.OrderedRemoteReceiverStage@47523643,
> Integer NumberOfTries = 3, Integer RetryTimeout = 10000,
> [ClassNodeImpl 'org.apache.reef.wake.remote.ports.TcpPortProvider']:
> = RangeTcpPortProvider{portRangeBegin=10000, portRangeCount=10000,
> portRangeTryCount=1000}, LocalAddressProvider = new
> HostnameBasedLocalAddressProvider())
>         at org.apache.reef.tang.implementation.java.
> InjectorImpl.injectFromPlan(InjectorImpl.java:654)
>         at org.apache.reef.tang.implementation.java.
> InjectorImpl.getInstance(InjectorImpl.java:515)
>         at org.apache.reef.tang.implementation.java.
> InjectorImpl.getInstance(InjectorImpl.java:533)
>         at org.apache.reef.wake.remote.transport.netty.
> MessagingTransportFactory.newInstance(MessagingTransportFactory.java:133)
>         ... 56 more
> Caused by: org.apache.reef.wake.remote.transport.exception.
> TransportRuntimeException:
> tcpPortProvider failed to return free ports.
>         at org.apache.reef.wake.remote.transport.netty.
> NettyMessagingTransport.<init>(NettyMessagingTransport.java:183)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> NativeConstructorAccessorImpl.java:62)
>         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>         at org.apache.reef.tang.implementation.java.
> InjectorImpl.injectFromPlan(InjectorImpl.java:637)
>         ... 59 more
> Caused by: java.lang.IllegalStateException: tcpPortProvider cannot
> find a free port.
>         at org.apache.reef.wake.remote.transport.netty.
> NettyMessagingTransport.<init>(NettyMessagingTransport.java:167)
>         ... 64 more
>
> This error was caused by NettyMessagingTransport when it failed to find
> available TCP port in the local address provided by LocalAddressProvider.
> Because of this, this error occurred selectively depending on the network
> environment.
>
> I've resolved it by changing LegacyLocalAddressProvider as the default
> implementation of LocalAddressProvider, which sorts the available local
> addresses and find minimum one.
> It seems to have been deprecated because it is slow, but it worked for me.
> For now, I added a custom Wake jar to my project for this.
>
> So, isn't there anyone who has experienced this issue?
> If is so, what do you think about changing the default implementation of
> LocalAddressProvider?
> I'm seeking your opinions.
>
> Best regards,
> Sanha Lee.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message