Martin Kleppmann created SAMZA-305:
--------------------------------------

             Summary: Isolate user library dependencies from framework 
dependencies
                 Key: SAMZA-305
                 URL: https://issues.apache.org/jira/browse/SAMZA-305
             Project: Samza
          Issue Type: New Feature
    Affects Versions: 0.7.0
            Reporter: Martin Kleppmann


In a running container, Samza framework classes and user job classes are 
bundled into the same classpath. This can cause conflicts, especially with 
transitive dependencies. For example, samza-yarn depends on hadoop-common which 
depends on Guava, and the user job may depend on some database client library 
which depends on a different version of Guava. The ensuing version conflicts 
can be nasty.

The same problem also plagues other frameworks that run user code, for example 
MapReduce and Storm. To my knowledge, neither of those have solved the problem. 
Tomcat *has* solved the problem by using a separate classloader for every 
webapp running in its container.

Storm's ideas for classpath isolation are discussed 
[here|https://github.com/xumingming/storm/wiki/Storm-Dependency-Isolation] and 
[here|https://www.bountysource.com/issues/87805-keep-storm-dependencies-and-user-dependencies-independent].
 It's tracked in STORM-129.

It would be worth investigating this — if classpath isolation requires an 
intrusive change to Samza, it might be worth getting the pain out of the way 
while Samza is still young.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to