Skip to content

Commit

Permalink
Safely invoking application code within try/catch.
Browse files Browse the repository at this point in the history
Signed-off-by: Simone Bordet <[email protected]>
  • Loading branch information
sbordet committed Feb 2, 2021
1 parent e9518f1 commit 102cbdf
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,15 @@ private void fireBeginEvent() {
config.getListeners().stream()
.filter(l -> l instanceof BeginListener)
.map(l -> (BeginListener)l)
.forEach(l -> l.onBegin(this));
.forEach(this::invokeBeginListener);
}

private void invokeBeginListener(BeginListener listener) {
try {
listener.onBegin(this);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private void fireReadyEvent() {
Expand All @@ -453,7 +461,15 @@ private void fireReadyEvent() {
config.getListeners().stream()
.filter(l -> l instanceof ReadyListener)
.map(l -> (ReadyListener)l)
.forEach(l -> l.onReady(this));
.forEach(this::invokeReadyListener);
}

private void invokeReadyListener(ReadyListener listener) {
try {
listener.onReady(this);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private void fireEndEvent() {
Expand All @@ -463,7 +479,15 @@ private void fireEndEvent() {
config.getListeners().stream()
.filter(l -> l instanceof EndListener)
.map(l -> (EndListener)l)
.forEach(l -> l.onEnd(this));
.forEach(this::invokeEndListener);
}

private void invokeEndListener(EndListener listener) {
try {
listener.onEnd(this);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private void fireCompleteEvent() {
Expand All @@ -473,21 +497,45 @@ private void fireCompleteEvent() {
config.getListeners().stream()
.filter(l -> l instanceof CompleteListener)
.map(l -> (CompleteListener)l)
.forEach(l -> l.onComplete(this));
.forEach(this::invokeCompleteListener);
}

private void invokeCompleteListener(CompleteListener listener) {
try {
listener.onComplete(this);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private void fireResourceNodeEvent(Resource.Info info) {
config.getResourceListeners().stream()
.filter(l -> l instanceof Resource.NodeListener)
.map(l -> (Resource.NodeListener)l)
.forEach(l -> l.onResourceNode(info));
.forEach(l -> invokeResourceNodeListener(l, info));
}

private void invokeResourceNodeListener(Resource.NodeListener listener, Resource.Info info) {
try {
listener.onResourceNode(info);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private void fireResourceTreeEvent(Resource.Info info) {
config.getResourceListeners().stream()
.filter(l -> l instanceof Resource.TreeListener)
.map(l -> (Resource.TreeListener)l)
.forEach(l -> l.onResourceTree(info));
.forEach(l -> invokeResourceTreeListener(l, info));
}

private void invokeResourceTreeListener(Resource.TreeListener listener, Resource.Info info) {
try {
listener.onResourceTree(info);
} catch (Throwable x) {
LOGGER.info("ignored failure while invoking listener {}", listener, x);
}
}

private class Sender {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ private static void displayReport(LoadGenerator.Config config, ReportListener li
LOGGER.info("------------- Load Generator Report --------------");
LOGGER.info("----------------------------------------------------");
LOGGER.info("{}://{}:{} over {}", config.getScheme(), config.getHost(), config.getPort(), config.getHttpClientTransportBuilder().getType());
LOGGER.info("resource tree : {} resources", config.getResource().descendantCount());
LOGGER.info("resource tree : {} resource(s)", config.getResource().descendantCount());
Instant startInstant = listener.getBeginInstant();
LOGGER.info("begin date time : {}", dateTimeFormatter.format(startInstant));
Instant completeInstant = listener.getCompleteInstant();
Expand Down

0 comments on commit 102cbdf

Please sign in to comment.