Return-Path: X-Original-To: apmail-storm-dev-archive@minotaur.apache.org Delivered-To: apmail-storm-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8F85C1040D for ; Fri, 7 Feb 2014 03:42:22 +0000 (UTC) Received: (qmail 53668 invoked by uid 500); 7 Feb 2014 03:42:21 -0000 Delivered-To: apmail-storm-dev-archive@storm.apache.org Received: (qmail 52590 invoked by uid 500); 7 Feb 2014 03:42:14 -0000 Mailing-List: contact dev-help@storm.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@storm.incubator.apache.org Delivered-To: mailing list dev@storm.incubator.apache.org Delivered-To: moderator for dev@storm.incubator.apache.org Received: (qmail 8610 invoked by uid 99); 7 Feb 2014 03:10:00 -0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of cody.a.ray@gmail.com designates 209.85.216.172 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=DKa3AIXQNYLbfXewoBmMsxA0iSZ54LvKlMgpMZHGMq0=; b=ZjLSj6unwCJsF6vLgLF9cT8v+f8ld85ZGyRI4S3LxToXR3DisdzWLR6+6w0CKl8GRT GISE45H7ViH7dTxyu+vij0Ij6f/UTyh4o+K1b68orQqAuzgdYiJeTsYjSla7xFGHahnb NrGk2VgSov8fpch6FiW6mn0THwjDsl4K1eqbK+X3VPCD8tMemMMw6M84Hi50Bqxp81Kc C5eZcMMo4alegj7+DSg+X1gliHCqIZtPjSpNDb9qT2SS1YusUL3e0BS6YED+mY5nyrRA xDz20HuGqs5IwDyW3pZlDGoMWa0ol9OfU+4dKatsEFNwz0cJ1to6mMpXAF0lsR+pi7xb T+pg== X-Received: by 10.224.98.212 with SMTP id r20mr18032989qan.0.1391742573754; Thu, 06 Feb 2014 19:09:33 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <09772E04-68A1-42E8-821D-818E919D4759@gmail.com> References: <62C4B740-3DF3-4D48-8664-6BFBE86388C7@gmail.com> <09772E04-68A1-42E8-821D-818E919D4759@gmail.com> From: "Cody A. Ray" Date: Thu, 6 Feb 2014 21:09:13 -0600 Message-ID: Subject: Re: http-client version conflict To: user@storm.incubator.apache.org Cc: dev@storm.incubator.apache.org Content-Type: multipart/alternative; boundary=089e0149d0d0ba40a904f1c8519b X-Virus-Checked: Checked by ClamAV on apache.org --089e0149d0d0ba40a904f1c8519b Content-Type: text/plain; charset=ISO-8859-1 +1 for relocating storm's dependencies. I just ran into this a couple weeks ago and have had to side-shelf the project until I find a work-around. Will check-out the shade plugin. Thanks for the rec! -Cody On Thu, Feb 6, 2014 at 9:07 PM, P. Taylor Goetz wrote: > I tend to agree. > > The move to maven makes package relocation very easy, but we should be > careful not to abuse it if that's a direction we decide to take. > > IMHO, users having to modify the contents of $STORM_HOME/lib is really bad > and should only be done as a last resort. If someone asks for help with an > issue after they've modified the contents of $STORM_HOM/lib, all bets are > off. > > I also agree that we need to keep a close watch on our dependencies, and > that some might warrant re-evaluation. > > I'd love to others opinions. > > - Taylor > > On Feb 6, 2014, at 9:28 PM, Adam Lewis wrote: > > My $0.02 on this subject: > > Without going down the path of class loader or OSGi mania and becoming a > full container, I'd definitely be in favor of storm relocating its own > dependencies. In this way edge cases around things like reflection can be > handled once within storm rather than burdening every topology builder with > those details. Part of the problem seems to be that storm makes extensive > use (directly or transitively) of a lot of go-to utility libraries like > guava, thrift, jodatime, json-simple, snakeyaml, commons-io, etc... I'm > sure that leveraging these libraries allowed storm's development to proceed > rapidly, but from a maturity perspective, it is problematic to impose these > version choices on users. And while I might want Storm to, say, try to > track the latest Guava version, that same policy could be very problematic > for others. > > If storm can relocate even some of its own dependencies, I think that > would be a great help to me at least. Longer term, I wonder how much of > some of these libraries are really being used. For example, is clj-time > (and by extension joda-time) really needed? Or just a small fraction of the > functionality in that library? I can probably pitch in some of the effort > required to do this, if this is the direction people want to go in. > > > > > On Thu, Feb 6, 2014 at 8:44 PM, P. Taylor Goetz wrote: > >> I'm glad the shader plugin worked for you. >> >> Updating dependencies can be tricky as it can easily introduce >> regressions. >> >> Ultimately we need to figure out the best solution to avoiding conflicts >> between user code (i.e. dependencies in topology jar files) and Storm's >> libraries. >> >> The classloader approach has been attempted, but IMO Storm's use of >> serialization complicates things significantly. Package relocation seems to >> be a relatively lightweight solution. >> >> If that's a direction we pursue, then it introduces the question of >> whether Storm should relocate its dependencies, or if that should be left >> up to the user (topology developer). >> >> Elastic Search has gone down the path of relocating some of their >> dependencies [1] (not necessarily an endorsement, just an observation). >> >> I've CC'd dev@ since this is all related to the infamous issue #115, >> which is now STORM-129 [2]. >> >> - Taylor >> >> [1] >> https://github.com/elasticsearch/elasticsearch/blob/master/pom.xml#L474 >> [2] https://issues.apache.org/jira/browse/STORM-129 >> >> >> >> >> >> On Feb 6, 2014, at 7:25 PM, Vinay Pothnis >> wrote: >> >> Thank you all for replies! The shader-plugin solution seems to work for >> us. >> >> I wonder if we can create a JIRA ticket for storm to upgrade the >> http-client library as part of their next release. >> >> -Vinay >> >> >> On Thu, Feb 6, 2014 at 2:38 PM, Michael Rose wrote: >> >>> We've done this with SLF4j and Guava as well without issues. >>> >>> Michael Rose (@Xorlev ) >>> Senior Platform Engineer, FullContact >>> michael@fullcontact.com >>> >>> >>> On Thu, Feb 6, 2014 at 3:03 PM, Mark Greene wrote: >>> >>>> We had this problem as well. We modified our chef cookbook to just >>>> replace the older version with the newer one and storm didn't complain or >>>> have any other issues as a result. >>>> >>>> >>>> On Wed, Feb 5, 2014 at 10:31 AM, P. Taylor Goetz wrote: >>>> >>>>> Your best bet is probably to use the shade plugin to relocate the >>>>> http-client package so it doesn't conflict with the version storm uses. >>>>> >>>>> Storm does this with the libtrhift dependency in storm-core: >>>>> >>>>> >>>>> https://github.com/apache/incubator-storm/blob/master/storm-core/pom.xml#L220 >>>>> >>>>> (You can ignore the clojure transformer in that config, unless you >>>>> have non-AOT clojure code that uses the http-client library). >>>>> >>>>> More information on using the shade plugin to do package relocations >>>>> can be found here: >>>>> >>>>> >>>>> http://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html >>>>> >>>>> - Taylor >>>>> >>>>> On Feb 4, 2014, at 4:27 PM, Vinay Pothnis >>>>> wrote: >>>>> >>>>> > Hello, >>>>> > >>>>> > I am using storm version 0.9.0.1. >>>>> > My application depends on apache http-client version 4.3.2 - but >>>>> storm depends on http-client version 4.1.1. >>>>> > >>>>> > What is the best way to override this dependency? >>>>> > >>>>> > Thanks >>>>> > Vinay >>>>> >>>>> >>>> >>> >> >> > > -- Cody A. Ray, LEED AP codyaray@drexel.edu 215.501.7891 --089e0149d0d0ba40a904f1c8519b--