diff --git a/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/EventBusResourceStorage.java b/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/EventBusResourceStorage.java index dbe1da47..c4a699b8 100644 --- a/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/EventBusResourceStorage.java +++ b/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/EventBusResourceStorage.java @@ -18,8 +18,8 @@ public class EventBusResourceStorage implements ResourceStorage { private static final Logger log = LoggerFactory.getLogger(EventBusResourceStorage.class); - private EventBus eventBus; - private String address; + private final EventBus eventBus; + private final String address; public EventBusResourceStorage(EventBus eventBus, String address) { this.eventBus = eventBus; @@ -34,14 +34,16 @@ public void get(String uri, final Handler bodyHandler) { eventBus.request(address, request, (Handler>>) message -> { if (message.failed()) { - log.warn("Got failed msg from event bus while GET. Lets run into NPE now.", message.cause()); + log.warn("Got failed msg from event bus while GET. Lets run into NPE now.", new Exception("stacktrace", message.cause())); // Would be best to stop processing now. But we don't to keep backward // compatibility (Will run into NPE anyway). } Buffer buffer = message.result().body(); int headerLength = buffer.getInt(0); JsonObject header1 = new JsonObject(buffer.getString(4, headerLength + 4)); - if (header1.getInteger("statusCode") == 200) { + Integer statusCode = header1.getInteger("statusCode"); + if( statusCode == null ) log.debug("getInteger(\"statusCode\") -> null"); + if( statusCode != null && statusCode == 200 ){ bodyHandler.handle(buffer.getBuffer(4 + headerLength, buffer.length())); } else { bodyHandler.handle(null); @@ -56,7 +58,8 @@ public void put(String uri, MultiMap headers, Buffer buffer, final Handler>>) message -> { if (message.failed()) { - log.warn("Got failed msg from event bus while PUT. Lets run into NPE now.", message.cause()); + log.warn("Got failed msg from event bus while PUT. Lets run into NPE now.", + new Exception("stacktrace", message.cause())); // Would be best to stop processing now. But we don't to keep backward // compatibility (Will run into NPE anyway). } @@ -79,7 +82,8 @@ public void delete(String uri, final Handler doneHandler) { request.setInt(0, header.length()).appendBuffer(header); eventBus.request(address, request, (Handler>>) message -> { if (message.failed()) { - log.warn("Got failed msg from event bus while DELETE. Lets run into NPE now.", message.cause()); + log.warn("Got failed msg from event bus while DELETE. Lets run into NPE now.", + new Exception("stacktrace", message.cause())); // Would be best to stop processing now. But we don't to keep backward // compatibility (Will run into NPE anyway). } diff --git a/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/HttpResourceStorage.java b/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/HttpResourceStorage.java index 5e0edf74..83166c1b 100644 --- a/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/HttpResourceStorage.java +++ b/gateleen-core/src/main/java/org/swisspush/gateleen/core/storage/HttpResourceStorage.java @@ -46,28 +46,28 @@ public void get(final String path, final Handler bodyHandler) { log.debug("Reading {}", path); client.request(HttpMethod.GET, path).onComplete(asyncResult -> { if (asyncResult.failed()) { - log.warn("Failed request to {}: {}", path, asyncResult.cause()); + log.warn("Failed request to {} (HINT: Happy timeout on caller side)", + path, new Exception("stacktrace", asyncResult.cause())); return; } HttpClientRequest request = asyncResult.result(); request.exceptionHandler(e -> { - log.error("Storage request error", e); + log.error("Storage request error", new Exception("stacktrace", e)); bodyHandler.handle(null); }); request.setTimeout(TIMEOUT); request.send(event -> { HttpClientResponse response = event.result(); response.exceptionHandler(exception -> { - log.error("Reading {} failed: {}", path, exception.getMessage()); + log.error("Reading {} failed", path, new Exception("stacktrace", exception)); bodyHandler.handle(null); }); if (response.statusCode() == StatusCode.OK.getStatusCode()) { response.bodyHandler(bodyHandler); } else { log.debug("Got status code other than 200. Status code = {}, status message is '{}'.", - (response == null ? "" : response.statusCode()), - ((response == null || response.statusMessage() == null) ? "" : response.statusMessage())); + response.statusCode(), response.statusMessage()); bodyHandler.handle(null); } }); @@ -86,12 +86,12 @@ public int getPort() { public void put(final String uri, MultiMap headers, Buffer buffer, final Handler doneHandler) { client.request(HttpMethod.PUT, uri).onComplete(asyncResult -> { if (asyncResult.failed()) { - log.warn("Failed request to {}: {}", uri, asyncResult.cause()); + log.warn("Failed request to {} (HINT: Happy timout on caller side)", + uri, new Exception("stacktrace", asyncResult.cause())); return; } HttpClientRequest request = asyncResult.result(); - request.exceptionHandler(exception -> { log.error("Putting {} failed: {}", uri, exception.getMessage()); doneHandler.handle(StatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); @@ -106,12 +106,16 @@ public void put(final String uri, MultiMap headers, Buffer buffer, final Handler request.putHeader("Content-Length", "" + buffer.length()); request.write(buffer); request.send(asyncRespnose -> { + if( asyncRespnose.failed() ){ + log.error("TODO error handling", new Exception("stacktrace", asyncRespnose.cause())); + return; + } HttpClientResponse response = asyncRespnose.result(); - response.exceptionHandler(exception -> { - log.error("Exception on response to PUT from {}: {}", uri, exception.getMessage()); + response.exceptionHandler( ex -> { + log.error("Exception on response to PUT {}", uri, new Exception("stacktrace", ex)); doneHandler.handle(StatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); }); - response.endHandler(event -> doneHandler.handle(response.statusCode())); + response.endHandler(nothing -> doneHandler.handle(response.statusCode())); }); }); } @@ -125,20 +129,24 @@ public void put(final String uri, final Buffer buffer, final Handler do public void delete(final String uri, final Handler doneHandler) { client.request(HttpMethod.DELETE, uri).onComplete(asyncResult -> { if (asyncResult.failed()) { - log.warn("Failed request to {}: {}", uri, asyncResult.cause()); + log.warn("Failed request to {}", uri, new Exception("stacktrace", asyncResult.cause())); return; } HttpClientRequest request = asyncResult.result(); - request.exceptionHandler(exception -> { - log.error("Deleting {} failed: {}", uri, exception.getMessage()); + request.exceptionHandler( ex -> { + log.warn("Deleting {} failed", uri, new Exception("stacktrace", ex)); doneHandler.handle(StatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); }); request.setTimeout(TIMEOUT); request.send(asyncRespnose -> { + if( asyncRespnose.failed() ){ + log.warn("TODO error handling", new Exception("stacktrace", asyncRespnose.cause())); + return; + } HttpClientResponse response = asyncRespnose.result(); response.exceptionHandler(exception -> { - log.error("Exception on response to DELETE from {}: {}", uri, exception.getMessage()); + log.error("Exception on response to DELETE from {}", uri, new Exception("stacktrace", exception)); doneHandler.handle(StatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); }); response.endHandler(event -> doneHandler.handle(response.statusCode()));