提交 00004e3a authored 作者: Thomas Mueller's avatar Thomas Mueller

The wrong exception was thrown when trying to connect to a server if the server was not running.

上级 4c28636c
......@@ -1058,11 +1058,12 @@ public class ErrorCode {
public static final int DUPLICATE_PROPERTY_1 = 90066;
/**
* The error with code <code>90067</code> is thrown when
* the connection to the database is lost. A possible reason
* is that the database connection has been closed due to a shutdown,
* or that the server is stopped. Other causes could be:
* the server is not an H2 server, or the network connection is broken.
* The error with code <code>90067</code> is thrown when the client could
* not connect to the database, or if the connection was lost. Possible
* reasons are: the database server is not running on the given port, the
* connection was closed due to a shutdown, or the server was stopped. Other
* possible causes are: the server is not an H2 server, or the network
* connection is broken.
*/
public static final int CONNECTION_BROKEN_1 = 90067;
......
......@@ -319,7 +319,7 @@ public class SessionRemote extends SessionWithState implements SessionFactory, D
String[] servers = StringUtils.arraySplit(server, ',', true);
int len = servers.length;
transferList.clear();
// TODO cluster: support at most 2 connections
// TODO cluster: support more than 2 connections
boolean switchOffCluster = false;
try {
for (int i = 0; i < len; i++) {
......@@ -328,7 +328,7 @@ public class SessionRemote extends SessionWithState implements SessionFactory, D
transferList.add(trans);
} catch (IOException e) {
if (len == 1) {
throw DbException.convert(e);
throw DbException.get(ErrorCode.CONNECTION_BROKEN_1, e, e.getMessage());
}
switchOffCluster = true;
}
......
......@@ -209,6 +209,14 @@ public class TestTools extends TestBase {
}
private void testWrongServer() throws Exception {
try {
// try to connect when the server is not running
Connection conn = getConnection("jdbc:h2:tcp://localhost:9001/test");
conn.close();
fail();
} catch (SQLException e) {
assertEquals(ErrorCode.CONNECTION_BROKEN_1, e.getErrorCode());
}
final ServerSocket serverSocket = new ServerSocket(9001);
Thread thread = new Thread() {
public void run() {
......@@ -224,6 +232,7 @@ public class TestTools extends TestBase {
}
};
thread.start();
Thread.sleep(100);
try {
Connection conn = getConnection("jdbc:h2:tcp://localhost:9001/test");
conn.close();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论