[
https://issues.apache.org/jira/browse/ACCUMULO-729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christopher Tubbs updated ACCUMULO-729:
---------------------------------------
Assignee: (was: Christopher Tubbs)
> 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
>
> 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)