[
https://issues.apache.org/jira/browse/ACCUMULO-729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13976861#comment-13976861
]
Christopher Tubbs commented on ACCUMULO-729:
--------------------------------------------
I think this ticket can be accomplished with ACCUMULO-756 and ACCUMULO-1483.
> refactor core to reduce client application dependency version conflicts
> -----------------------------------------------------------------------
>
> Key: ACCUMULO-729
> URL: https://issues.apache.org/jira/browse/ACCUMULO-729
> Project: Accumulo
> Issue Type: Sub-task
> Components: client
> Reporter: Adam Fuchs
> Assignee: Christopher Tubbs
>
> Accumulo client applications often include things like thrift servers. If the
> client application uses a different version of a library (like libthrift)
> than the Accumulo client library uses then baby Jesus cries (and it doesn't
> work).
> Version conflicts have been common among our users for the following
> libraries:
> * log4j/slf4j
> * thrift
> * zookeeper
> * hadoop
> This problem is solvable with a moderate amount of effort. The Accumulo
> client library should create a separate classloader to load its dependencies.
> We can then separate the core code into interfaces and implementations. For
> example, the following methods can load the implementations through
> reflection, and all of their dependencies can be contained in that
> ClassLoader:
> * Instance.getConnector(...)
> * Instance.getConfiguration(...)
> * Instance.*
> It's probably only the Instance methods that need to do the reflection trick,
> since everything else is loaded from a connector, whose implementation would
> be loaded from the other ClassLoader.
> This exercise would also make the Accumulo client API more explicit, which
> would improve accessibility and reduce the false sense of continuity that may
> be perceived around some of the classes in core.
--
This message was sent by Atlassian JIRA
(v6.2#6252)