Skip to content

Commit 2e58f1e

Browse files
committed
Fix compatibility with 1.10 and fix errors parsing #89
1 parent 5a4f770 commit 2e58f1e

File tree

3 files changed

+51
-57
lines changed

3 files changed

+51
-57
lines changed

src/main/java/io/tarantool/driver/exceptions/errors/TarantoolErrors.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,9 @@ public static class TarantoolErrorsErrorFactory implements TarantoolErrorFactory
4949
private static final StringValue ERROR_MESSAGE = ValueFactory.newString("str");
5050
private static final StringValue STACKTRACE = ValueFactory.newString("stack");
5151
private static final Pattern NETWORK_ERROR_PATTERN = Pattern.compile(
52-
".*" +
53-
"\"code\":" +
54-
"[" + ErrorsCodes.NO_CONNECTION.getCode() + "|" + ErrorsCodes.TIMEOUT.getCode() + "]" +
55-
".*" +
56-
"\"type\":\"" + CLIENT_ERROR + "\"" +
57-
".*", Pattern.DOTALL);
52+
"\\B\"type\":\"" + CLIENT_ERROR + "\"\\B" +
53+
".*\\B\"code\":" + "[" + ErrorsCodes.NO_CONNECTION.getCode()
54+
+ "|" + ErrorsCodes.TIMEOUT.getCode() + "]\\B.*", Pattern.DOTALL);
5855

5956
public TarantoolErrorsErrorFactory() {
6057
}

src/test/java/io/tarantool/driver/integration/TarantoolErrorsIT.java

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ private ProxyTarantoolTupleClient setupClient() {
4646
private RetryingTarantoolTupleClient setupRetryingClient(int retries) {
4747
ProxyTarantoolTupleClient client = setupClient();
4848
return new RetryingTarantoolTupleClient(client,
49-
TarantoolRequestRetryPolicies
50-
.byNumberOfAttempts(retries).build());
49+
TarantoolRequestRetryPolicies
50+
.byNumberOfAttempts(retries).build());
5151
}
5252

5353
@Test
@@ -58,14 +58,13 @@ void testNetworkError_boxErrorUnpackNoConnection() {
5858
client.callForSingleResult("box_error_unpack_no_connection", HashMap.class).get();
5959
fail("Exception must be thrown after last retry attempt.");
6060
} catch (Throwable e) {
61+
String message = e.getCause().getMessage();
62+
6163
assertTrue(e.getCause() instanceof TarantoolInternalNetworkException);
62-
assertTrue(e.getCause().getMessage().contains(
63-
"code: 77\n" +
64-
"message: Connection is not established\n" +
65-
"base_type: ClientError\n" +
66-
"type: ClientError\n" +
67-
"trace:")
68-
);
64+
assertTrue(message.contains("code: 77"));
65+
assertTrue(message.contains("message: Connection is not established"));
66+
assertTrue(message.contains("type: ClientError"));
67+
assertTrue(message.contains("trace:"));
6968
}
7069
}
7170

@@ -80,14 +79,13 @@ void testNetworkError_boxErrorUnpackTimeout() {
8079
String.class).get();
8180
fail("Exception must be thrown after last retry attempt.");
8281
} catch (Throwable e) {
82+
String message = e.getCause().getMessage();
83+
8384
assertTrue(e.getCause() instanceof TarantoolInternalNetworkException);
84-
assertTrue(e.getCause().getMessage().contains(
85-
"code: 78\n" +
86-
"message: Timeout exceeded\n" +
87-
"base_type: ClientError\n" +
88-
"type: ClientError\n" +
89-
"trace:")
90-
);
85+
assertTrue(message.contains("code: 78"));
86+
assertTrue(message.contains("message: Timeout exceeded"));
87+
assertTrue(message.contains("type: ClientError"));
88+
assertTrue(message.contains("trace:"));
9189
}
9290
}
9391

@@ -102,12 +100,11 @@ void testNetworkError_boxErrorTimeout() {
102100
String.class).get();
103101
fail("Exception must be thrown after last retry attempt.");
104102
} catch (Throwable e) {
103+
String message = e.getCause().getMessage();
104+
105105
assertTrue(e.getCause() instanceof TarantoolInternalNetworkException);
106-
assertTrue(e.getCause().getMessage().contains(
107-
"InnerErrorMessage:\n" +
108-
"code: 78\n" +
109-
"message: Timeout exceeded")
110-
);
106+
assertTrue(message.contains("code: 78"));
107+
assertTrue(message.contains("message: Timeout exceeded"));
111108
}
112109
}
113110

@@ -119,13 +116,13 @@ void testNetworkError_crudErrorTimeout() {
119116
client.callForSingleResult("crud_error_timeout", HashMap.class).get();
120117
fail("Exception must be thrown after last retry attempt.");
121118
} catch (Throwable e) {
119+
String message = e.getCause().getMessage();
120+
122121
assertTrue(e.getCause() instanceof TarantoolInternalNetworkException);
123-
assertTrue(e.getCause().getMessage().contains(
124-
"Function returned an error: {\"code\":78," +
125-
"\"base_type\":\"ClientError\"," +
126-
"\"type\":\"ClientError\"," +
127-
"\"message\":\"Timeout exceeded\","
128-
));
122+
assertTrue(message.contains("\"code\":78"));
123+
assertTrue(message.contains("\"type\":\"ClientError\""));
124+
assertTrue(message.contains("\"message\":\"Timeout exceeded\""));
125+
assertTrue(message.contains("\"trace\":"));
129126
}
130127
}
131128

@@ -137,33 +134,32 @@ void testNonNetworkError_boxErrorUnpack() {
137134
client.callForSingleResult("box_error_non_network_error", HashMap.class).get();
138135
fail("Exception must be thrown after last retry attempt.");
139136
} catch (Throwable e) {
137+
String message = e.getCause().getMessage();
138+
140139
assertTrue(e.getCause() instanceof TarantoolInternalException);
141140
assertFalse(e.getCause() instanceof TarantoolInternalNetworkException);
142-
assertTrue(e.getCause().getMessage().contains(
143-
"code: 40\n" +
144-
"message: Failed to write to disk\n" +
145-
"base_type: ClientError\n" +
146-
"type: ClientError\n" +
147-
"trace:")
148-
);
141+
assertTrue(message.contains("code: 40"));
142+
assertTrue(message.contains("message: Failed to write to disk"));
143+
assertTrue(message.contains("type: ClientError"));
144+
assertTrue(message.contains("trace:"));
149145
}
150146
}
151147

152-
@Test
153-
void testNonNetworkError_boxError() {
154-
try {
155-
ProxyTarantoolTupleClient client = setupClient();
156-
157-
client.callForSingleResult("raising_error", HashMap.class).get();
158-
fail("Exception must be thrown after last retry attempt.");
159-
} catch (Throwable e) {
160-
assertTrue(e.getCause() instanceof TarantoolInternalException);
161-
assertFalse(e.getCause() instanceof TarantoolInternalNetworkException);
162-
assertTrue(e.getCause().getMessage().contains(
163-
"InnerErrorMessage:\n" +
164-
"code: 32\n" +
165-
"message:")
166-
);
167-
}
148+
@Test
149+
void testNonNetworkError_boxError() {
150+
try {
151+
ProxyTarantoolTupleClient client = setupClient();
152+
153+
client.callForSingleResult("raising_error", HashMap.class).get();
154+
fail("Exception must be thrown after last retry attempt.");
155+
} catch (Throwable e) {
156+
String message = e.getCause().getMessage();
157+
158+
assertTrue(e.getCause() instanceof TarantoolInternalException);
159+
assertFalse(e.getCause() instanceof TarantoolInternalNetworkException);
160+
assertTrue(message.contains("InnerErrorMessage:"));
161+
assertTrue(message.contains("code: 32"));
162+
assertTrue(message.contains("message:"));
168163
}
164+
}
169165
}

src/test/resources/cartridge/app/roles/api_router.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
local vshard = require('vshard')
22
local cartridge_rpc = require('cartridge.rpc')
33
local fiber = require('fiber')
4+
local crud = require('crud')
45
local log = require('log')
56

67
local function get_schema()
@@ -113,7 +114,7 @@ local function box_error_non_network_error()
113114
end
114115

115116
local function crud_error_timeout()
116-
return crud.get("test_space", ('x'):rep(2^27))
117+
return crud.select('test_space', { { '=', 'field1', ('x'):rep(2 ^ 27) } }, { timeout = 0.000001 })
117118
end
118119

119120
local function init(opts)

0 commit comments

Comments
 (0)