Skip to content

Commit f6cf1cd

Browse files
authored
Improve timeouts and exception handling (#18)
* Ignore eclipse.jdt.ls project files * Add cause to thrown exceptions where possible This helps with debugging underlying issues * Set callTimeout to 2x the http timeouts This is 2x the other timeouts because I don't want to change the current http timeout behavior. This overall timeout is only a safety measure for when the other timeouts fail us
1 parent e311a9e commit f6cf1cd

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
/target/
1+
target
2+
.classpath
3+
.project
4+
.settings

src/main/java/com/recombee/api_client/RecombeeClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,7 @@ private String sendRequest(Request request) throws ApiException {
917917
.connectTimeout(request.getTimeout(), TimeUnit.MILLISECONDS)
918918
.readTimeout(request.getTimeout(), TimeUnit.MILLISECONDS)
919919
.writeTimeout(request.getTimeout(), TimeUnit.MILLISECONDS)
920+
.callTimeout(request.getTimeout() * 2, TimeUnit.MILLISECONDS)
920921
.build();
921922

922923

@@ -949,7 +950,7 @@ private String sendRequest(Request request) throws ApiException {
949950
return response.body().string();
950951
}
951952
catch (InterruptedIOException e) {
952-
throw new ApiTimeoutException(request);
953+
throw new ApiTimeoutException(request, e);
953954
}
954955
catch (IOException e) {
955956
e.printStackTrace();
@@ -1009,7 +1010,7 @@ private void checkErrors(Response response, Request request) throws ResponseExce
10091010
throw new ResponseException(request, response.code(), response.body().string());
10101011
} catch (IOException e) {
10111012
e.printStackTrace();
1012-
throw new ResponseException(request, response.code(), "Failed to read the error from response");
1013+
throw new ResponseException(request, response.code(), "Failed to read the error from response", e);
10131014
}
10141015
}
10151016
}

src/main/java/com/recombee/api_client/exceptions/ApiException.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ public class ApiException extends Exception {
88
public ApiException(String message) {
99
super(message);
1010
}
11+
12+
public ApiException(String message, Throwable cause) {
13+
super(message, cause);
14+
}
1115
}

src/main/java/com/recombee/api_client/exceptions/ApiTimeoutException.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
/**
66
* Exception thrown when a request is not processed within the timeout
77
*/
8-
public class ApiTimeoutException extends ApiException {
8+
public class ApiTimeoutException extends ApiException {
99

1010
/**
1111
* Request that timed out
1212
*/
1313
Request request;
1414

15-
public ApiTimeoutException(Request request) {
16-
super(String.format("ApiTimeout: client did not get response within %s ms" , request.getTimeout()));
15+
public ApiTimeoutException(Request request, Throwable cause) {
16+
super(String.format("ApiTimeout: client did not get response within %s ms" , request.getTimeout()), cause);
1717
this.request = request;
1818
}
1919

src/main/java/com/recombee/api_client/exceptions/ResponseException.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/**
66
* Exception thrown when a request did not succeed (did not return 200 or 201)
77
*/
8-
public class ResponseException extends ApiException {
8+
public class ResponseException extends ApiException {
99

1010
/**
1111
* Request which failed
@@ -17,7 +17,11 @@ public class ResponseException extends ApiException {
1717
int statusCode;
1818

1919
public ResponseException(Request request, int statusCode, String message) {
20-
super(message);
20+
this(request, statusCode, message, null);
21+
}
22+
23+
public ResponseException(Request request, int statusCode, String message, Throwable cause) {
24+
super(message, cause);
2125
this.request = request;
2226
this.statusCode = statusCode;
2327
}

0 commit comments

Comments
 (0)