Hi all,
we (JMeter) have currently a problem running our nightly builds. The
tests fail, when we try to bind to the address of the hostname of the
build server. The server is bb-1604-test.apache.org and resolves to
207.244.88.135. It seems, that that address is not bound to the network
devices the jvm has access to. We have added a debug message to the
tests, that lists ens3 and lo with their IPv4 and IPv6 addresses, but
not the 207.244.88.135.
Is this a misconfiguration of the build server? Is there any way to
determine the "right" hostname that resolves to an address, that is
bound to an accessible network interface?
Regards,
Felix
-------- Weitergeleitete Nachricht --------
Betreff: Re: buildbot failure in on jmeter-nightly
Datum: Mon, 5 Feb 2018 21:38:26 +0100
Von: Felix Schumacher <felix.schumac...@internetallee.de>
Antwort an: d...@jmeter.apache.org, d...@jmeter.apache.org
An: d...@jmeter.apache.org, Gavin McDonald <ga...@16degrees.com.au>
Hi all,
I think I found out, why the build fails (Thanks Rainer).
The server has not bound the address for its hostname on any device
(that can be seen).
This is what the current test suite lists as network devices and their
addresses:
[java] java.rmi.server.hostname=null [java] Interfaces: {name:ens3
(ens3) => [/fe80:0:0:0:0:10ff:fefb:15%ens3, /10.10.4.78], name:lo (lo)
=> [/0:0:0:0:0:0:0:1%lo, /127.0.0.1]} [java]
java.rmi.server.hostname=null [java]
bb-1604-test.apache.org/207.244.88.135
We want to bind to 207.244.88.135, but that address is not bound (or at
least, we can't see it).
Should I open a jira issue?
Regards,
Felix
Am 01.02.2018 um 21:51 schrieb Felix Schumacher:
Am 26.01.2018 um 23:11 schrieb Felix Schumacher:
Am 26.01.2018 um 08:08 schrieb Felix Schumacher:
Am 26.01.2018 um 02:12 schrieb Gavin McDonald:
I fixed the node that nightly was building on and ran a manual
build, it failed , but not due the node this time I dont think.
Thanks for looking into this.
The current error log looks like the subversion checkout didn't
work
properly. It complains about a java file, that doesn't contain its
own class:
[javac]
/home/buildslave/slave/jmeter-nightly/build/src/core/org/apache/jmeter/rmi/RmiUtils.java:92:
error: cannot access SSLRMIClientSocketFactory [javac] final
SSLRMIClientSocketFactory factory = new
SSLRMIClientSocketFactory();
[javac] ^ [javac] bad source file:
/home/buildslave/slave/jmeter-nightly/build/src/core/org/apache/jmeter/rmi/SSLRMIClientSocketFactory.java
[javac] file does not contain class
org.apache.jmeter.rmi.SSLRMIClientSocketFactory [javac] Please
remove or make sure it appears in the correct subdirectory of the
sourcepath.
I try to force another nightly build and hope that subversion
fetches the file.
I managed to correct the broken subversion checkout, by adding some
options to the SVN check in buildbot, but now the nigthly build
shows
another problem:
[java] 1) initializationError(org.apache.jmeter.junit.JMeterTest)
[java] java.lang.Exception: Error creating
org.apache.jmeter.samplers.RemoteSampleListenerImpl [java] at
org.apache.jmeter.junit.JMeterTest.getObjects(JMeterTest.java:488)
[java] at
org.apache.jmeter.junit.JMeterTest.suiteSerializableElements(JMeterTest.java:388)
[java] at
org.apache.jmeter.junit.JMeterTest.suite(JMeterTest.java:133) [java]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[java] at java.lang.reflect.Method.invoke(Method.java:498) [java] at
org.junit.internal.runners.SuiteMethod.testFromSuiteMethod(SuiteMethod.java:35)
[java] at
org.junit.internal.runners.SuiteMethod.<init>(SuiteMethod.java:24)
[java] at
org.junit.internal.builders.SuiteMethodBuilder.runnerForClass(SuiteMethodBuilder.java:11)
[java] at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
[java] at
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
[java] at org.junit.runner.Computer.getRunner(Computer.java:40)
[java] at
org.junit.experimental.ParallelComputer.getRunner(ParallelComputer.java:64)
[java] at
org.junit.runner.Computer$1.runnerForClass(Computer.java:31) [java]
at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
[java] at
org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:101)
[java] at
org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:87)
[java] at org.junit.runners.Suite.<init>(Suite.java:81) [java] at
org.junit.runner.Computer.getSuite(Computer.java:28) [java] at
org.junit.experimental.ParallelComputer.getSuite(ParallelComputer.java:57)
[java] at org.junit.runner.Request.classes(Request.java:75) [java]
at
org.apache.jorphan.test.AllTests.getParallelTests(AllTests.java:231)
[java] at org.apache.jorphan.test.AllTests.main(AllTests.java:218)
[java] Caused by: java.lang.reflect.InvocationTargetException [java]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) [java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[java] at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[java] at
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[java] at
org.apache.jmeter.junit.JMeterTest.getObjects(JMeterTest.java:461)
[java] ... 23 more [java] Caused by:
java.rmi.server.ExportException:
Port already in use: 0; nested exception is: [java]
java.net.BindException: Cannot assign requested address (Bind
failed)
[java] at
sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:341)
[java] at
sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249)
[java] at
sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
[java] at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
[java] at
sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:236)
[java] at
java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:383)
[java] at
java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:346)
[java] at
java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:225)
[java] at
org.apache.jmeter.samplers.RemoteSampleListenerImpl.<init>(RemoteSampleListenerImpl.java:44)
[java] ... 28 more [java] Caused by: java.net.BindException: Cannot
assign requested address (Bind failed) [java] at
java.net.PlainSocketImpl.socketBind(Native Method) [java] at
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
[java] at java.net.ServerSocket.bind(ServerSocket.java:375) [java]
at
java.net.ServerSocket.<init>(ServerSocket.java:237) [java] at
javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.java:181)
[java]
at
sun.security.ssl.SSLServerSocketImpl.<init>(SSLServerSocketImpl.java:140)
[java] at
sun.security.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:95)
[java] at
org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:134)
[java] at
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666)
[java] at
sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330)
[java] ... 36 more
I tried to force the build two times hoping that the (randomly
chosen) port would be free. It didn't work.
I never experienced this problem on my local builds and jenkins
build
are fine, too.
Has anyone an idea to fix this, or the cause of the problem?
ping.
Anyone an idea?
I have caught the BindException and rethrown it as an IOException to
get the address the server socket tries to bind to. It looks like the
address, that gets reported earlier as the address for the node:
...
[java] java.rmi.server.hostname=null [java]
bb-1604-test.apache.org/207.244.88.135 [java]
isSiteLocalAddress:false
[java] isAnyLocalAddress:false [java] isLinkLocalAddress:false [java]
isLoopbackAddress:false [java] isMulticastAddress:false [java]
localhost/127.0.0.1 [java] isSiteLocalAddress:false [java]
isAnyLocalAddress:false [java] isLinkLocalAddress:false [java]
isLoopbackAddress:true [java] isMulticastAddress:false [java]
==================== [java] bb-1604-test.apache.org/207.244.88.135
[java] isSiteLocalAddress:false [java] isAnyLocalAddress:false [java]
isLinkLocalAddress:false [java] isLoopbackAddress:false [java]
isMulticastAddress:false ... [java] Caused by: java.io.IOException:
Could not bind to bb-1604-test.apache.org/207.244.88.135 using port 0
[java] at
org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:139)
[java] at
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666)
[java] at
sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330)
[java] ... 36 more [java] Caused by: java.net.BindException: Cannot
assign requested address (Bind failed) [java] at
java.net.PlainSocketImpl.socketBind(Native Method) [java] at
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
A port number 0 should be interpreted as choose one available. And if
I read the jdk source code correctly, the error gets thrown by the
following code:
if (NET_Bind(fd, (struct sockaddr *)&him, len) < 0) {
if (errno == EADDRINUSE || errno == EADDRNOTAVAIL ||
errno == EPERM || errno == EACCES) {
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG
"BindException",
"Bind failed");
} else {
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG
"SocketException",
"Bind failed");
}
return;
}
So the errno would be one of EADDRINUSE, EADDRNOTAVAIL, EPERM or
EACCES (whatever that means).
One difference to my local build is the value of "isSiteLocalAddress"
for bb-1604-test.apache.org, which is "false" for bb-1604-test and
"true" for my laptops address. But on the other hand, it is "false"
for the jenkins build node, which completes without an error (well,
most of the time).
Another difference to my local build is the strength of JCE, but
bb-1604-test has the same max key length as the jenkins build node.
Anyone any idea?
Felix
Felix
Felix
Gav…
On 26 Jan 2018, at 12:08 pm, build...@apache.org wrote:
The Buildbot has detected a new failure on builder jmeter-nightly
while building . Full details are available at:
https://ci.apache.org/builders/jmeter-nightly/builds/922
Buildbot URL: https://ci.apache.org/
Buildslave for this Build: bb_1604_test_ubuntu
Build Reason: forced: by IRC user <gmcdonald> on channel
#asftest:
test after rebooting node
Build Source Stamp: HEAD
Blamelist:
BUILD FAILED: failed shell_5
Sincerely,
-The Buildbot