[
https://issues.apache.org/jira/browse/CURATOR-144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14117785#comment-14117785
]
ASF GitHub Bot commented on CURATOR-144:
----------------------------------------
Github user cammckenzie commented on a diff in the pull request:
https://github.com/apache/curator/pull/41#discussion_r16966080
--- 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 --
That sounds OK to me for now. I'm not sure how a global change for all
recipes would look. Either a util implementation of the handleException() that
you've implemented, or a base class for all recipes that holds a reference to
error listeners and implements the handleException() method.
> 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.3.4#6332)