[
https://issues.apache.org/jira/browse/CURATOR-144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14111608#comment-14111608
]
ASF GitHub Bot commented on CURATOR-144:
----------------------------------------
Github user dragonsinth commented on a diff in the pull request:
https://github.com/apache/curator/pull/41#discussion_r16750643
--- Diff:
curator-recipes/src/main/java/org/apache/curator/framework/recipes/cache/TreeCache.java
---
@@ -580,13 +670,33 @@ public Void apply(TreeCacheListener listener)
}
/**
- * Default behavior is just to log the exception
- *
- * @param e the exception
+ * Send an exception to any listeners, or else log the error if there
are none.
*/
- protected void handleException(Throwable e)
+ private void handleException(final Throwable e)
{
- LOG.error("", e);
+ if ( errorListeners.size() == 0 )
+ {
+ LOG.error("", e);
+ }
+ else
+ {
+ errorListeners.forEach(new Function<UnhandledErrorListener,
Void>()
+ {
+ @Override
+ public Void apply(UnhandledErrorListener listener)
+ {
+ try
+ {
+ listener.unhandledError("", e);
+ }
+ catch ( Exception e )
+ {
+ LOG.error("Exception handling exception", e);
+ }
+ return null;
+ }
+ });
+ }
--- End diff --
What do you guys think about using an UnhandledErrorListener this way?
Seems nice to be able to handle background errors programmatically instead of
always going to the logger. I needed this for testing anyway, because I'm
tired of having to subclass TreeCache and override.
> TreeCache should use a builder for advanced options
> ---------------------------------------------------
>
> Key: CURATOR-144
> URL: https://issues.apache.org/jira/browse/CURATOR-144
> Project: Apache Curator
> Issue Type: Improvement
> Components: Recipes
> Reporter: Scott Blum
> Priority: Minor
> Original Estimate: 24h
> Remaining Estimate: 24h
>
--
This message was sent by Atlassian JIRA
(v6.2#6252)