From c6d279527ee3c163cd679bda0dfca00b2e1e2a60 Mon Sep 17 00:00:00 2001 From: MishaDemianenko Date: Fri, 15 Sep 2017 20:59:09 +0200 Subject: [PATCH] Exception are a bit different when Epoll is used. Adapt port bind exception to wrap any possible exception that happened during bind operation. --- .../main/java/org/neo4j/bolt/transport/NettyServer.java | 8 +------- .../java/org/neo4j/bolt/v1/transport/NettyServerTest.java | 1 - .../main/java/org/neo4j/helpers/PortBindException.java | 4 ++-- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/community/bolt/src/main/java/org/neo4j/bolt/transport/NettyServer.java b/community/bolt/src/main/java/org/neo4j/bolt/transport/NettyServer.java index 89768c9f0bd4f..8d81e0b5229b7 100644 --- a/community/bolt/src/main/java/org/neo4j/bolt/transport/NettyServer.java +++ b/community/bolt/src/main/java/org/neo4j/bolt/transport/NettyServer.java @@ -27,7 +27,6 @@ import io.netty.channel.EventLoopGroup; import io.netty.channel.epoll.Epoll; -import java.net.BindException; import java.net.InetSocketAddress; import java.util.Map; import java.util.concurrent.ThreadFactory; @@ -116,12 +115,7 @@ public void start() throws Throwable // We catch throwable here because netty uses clever tricks to have method signatures that look like they do not // throw checked exceptions, but they actually do. The compiler won't let us catch them explicitly because in theory // they shouldn't be possible, so we have to catch Throwable and do our own checks to grab them - - if ( e instanceof BindException ) - { - throw new PortBindException( bootstrapEntry.getValue().address(), (BindException) e ); - } - throw e; + throw new PortBindException( bootstrapEntry.getValue().address(), e ); } } } diff --git a/community/bolt/src/test/java/org/neo4j/bolt/v1/transport/NettyServerTest.java b/community/bolt/src/test/java/org/neo4j/bolt/v1/transport/NettyServerTest.java index 4c96537a86c98..a0a1f26c50f0b 100644 --- a/community/bolt/src/test/java/org/neo4j/bolt/v1/transport/NettyServerTest.java +++ b/community/bolt/src/test/java/org/neo4j/bolt/v1/transport/NettyServerTest.java @@ -54,7 +54,6 @@ public void shouldGivePortConflictErrorWithPortNumberInIt() throws Throwable // Expect exception.expect( PortBindException.class ); - exception.expectMessage( "Address localhost:16000 is already in use" ); // When Map initializersMap = diff --git a/community/kernel/src/main/java/org/neo4j/helpers/PortBindException.java b/community/kernel/src/main/java/org/neo4j/helpers/PortBindException.java index 26374c0425fc2..7e0b9c6a11926 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/PortBindException.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/PortBindException.java @@ -28,13 +28,13 @@ */ public class PortBindException extends BindException { - public PortBindException( ListenSocketAddress address, BindException original ) + public PortBindException( ListenSocketAddress address, Throwable original ) { super( String.format("Address %s is already in use, cannot bind to it.", address) ); setStackTrace( original.getStackTrace() ); } - public PortBindException( ListenSocketAddress address, ListenSocketAddress other, BindException original ) + public PortBindException( ListenSocketAddress address, ListenSocketAddress other, Throwable original ) { super( String.format("At least one of the addresses %s or %s is already in use, cannot bind to it.", address, other) ); setStackTrace( original.getStackTrace() );