You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@reef.apache.org by 이산하 <sa...@gmail.com> on 2017/06/05 09:44:37 UTC
Sharing Wake LocalAddressProvider issue
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.DefaultRemoteManagerImplementation.<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.
Re: Sharing Wake LocalAddressProvider issue
Posted by 이산하 <sa...@gmail.com>.
With pleasure!
Here is the issue.
https://issues.apache.org/jira/browse/REEF-1808
Thanks!
2017-06-05 21:55 GMT+09:00 Gyewon Lee <st...@gmail.com>:
> 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 이산하 <sa...@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.
> >
>
Re: Sharing Wake LocalAddressProvider issue
Posted by Gyewon Lee <st...@gmail.com>.
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 이산하 <sa...@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.
>