[infinispan-dev] Why JCache embedded has core as provided dependency

Tristan Tarrant ttarrant at redhat.com
Fri Jun 9 10:09:06 EDT 2017


They would be shipped in the zip distributions.

Tristan

On 6/9/17 8:37 AM, Sebastian Laskawiec wrote:
> I agree with Alan here. Maven Central is a free "download area", so I 
> wouldn't give it up for free. BTW, what is the point of creating and not 
> shipping them?
> 
> I would lean towards to removing them completely or limiting the number 
> of use cases to the minimum e.g. we shouldn't support using 
> infinispan-embedded and jcache; if jcache is essential it should be 
> inside infinispan-embedded; the same for Spring integration modules - 
> either we should put them in uber jars or say that you can use Spring 
> integration with small jars.
> 
> On Fri, Jun 9, 2017 at 5:05 AM Alan Field <afield at redhat.com 
> <mailto:afield at redhat.com>> wrote:
> 
>     Wasn't the ability to add a single dependency to a project to start
>     using Infinispan the whole purpose for the uber jars? I'm not trying
>     to make an argument for keeping them, because I know they have
>     caused many issues. I just think that if we are going to remove them
>     from Maven, then there should be a way to achieve the same easy
>     developer on boarding that uber jars were supposed to provide.
>     Whether this is Maven project templates, or something else doesn't
>     matter.
> 
>     Thanks,
>     Alan
> 
>     ----- Original Message -----
>      > From: "Tristan Tarrant" <ttarrant at redhat.com
>     <mailto:ttarrant at redhat.com>>
>      > To: infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>
>      > Sent: Thursday, June 8, 2017 4:05:08 AM
>      > Subject: Re: [infinispan-dev] Why JCache embedded has core as
>     provided dependency
>      >
>      > I think we should turn off maven deployment for uber jars.
>      >
>      > Tristan
>      >
>      > On 6/7/17 5:10 PM, Gustavo Fernandes wrote:
>      > > On Wed, Jun 7, 2017 at 11:02 AM, Galder Zamarreño
>     <galder at redhat.com <mailto:galder at redhat.com>
>      > > <mailto:galder at redhat.com <mailto:galder at redhat.com>>> wrote:
>      > >
>      > >     As far as I see it:
>      > >
>      > >     * infinispan-embedded should never be a dependency in a
>     Maven project.
>      > >
>      > >     * No uber jars should really be used as Maven dependencies
>     because
>      > >     all the exclusion that fine grained dependencies allow you
>     to do
>      > >     goes out of the window when all classes are inside a jar.
>     This is
>      > >     not just theory, I've personally had such issues.
>      > >
>      > >     * Uber jars are designed for Ant or other build tool users that
>      > >     don't have a dependency resolution engine in place.
>      > >
>      > >     Cheers,
>      > >
>      > >     p.s. I thought we had already discussed this before?
>      > >
>      > >
>      > >
>      > > I totally agree. In addition, uberjars should not be an osgi
>     bundle or a
>      > > jboss module, for similar reasons.
>      > >
>      > > P.S: Even Ant has a dependency mgmt available, which is Ivy.
>      > >
>      > > Cheers,
>      > > Gustavo
>      > >
>      > >     --
>      > >     Galder Zamarreño
>      > >     Infinispan, Red Hat
>      > >
>      > >      > On 7 Jun 2017, at 11:50, Sebastian Laskawiec
>     <slaskawi at redhat.com <mailto:slaskawi at redhat.com>
>      > >     <mailto:slaskawi at redhat.com <mailto:slaskawi at redhat.com>>>
>     wrote:
>      > >      >
>      > >      > Hey,
>      > >      >
>      > >      > The change was introduced by this commit [1] and relates
>     to this
>      > >     JIRAs [2][3]. The root cause is in [3].
>      > >      >
>      > >      > Imagine a scenario where you add JCache module to your
>     together
>      > >     infinispan-embedded. If your classpath was constructed in
>     such a way
>      > >     that infinispan-embedded was before infinispan-core
>     (classpath is
>      > >     scanned from left to right in standalone apps), we could get a
>      > >     relocated (uber jars move some classes into other packages)
>     logger.
>      > >     That caused class mismatch errors. It is worth to mention
>     that it
>      > >     will happen to all relocated classes, logger was just an
>     example.
>      > >     And we need to relocate them, since a user might want to
>     use his
>      > >     own, newer version of DMR or any other library. So there's no
>      > >     perfect solution here.
>      > >      >
>      > >      > Now a lot of time passed since then and we changed quite
>     a few
>      > >     things. So this topic probably needs to be revisited.
>      > >      >
>      > >      > So the first question that we should ask, shall we allow
>     putting
>      > >     jcache and infinispan-embedded together on the classpath.
>     If the
>      > >     answer is yes, I believe it should stay as it is (since the
>     user
>      > >     always have a choice whether he wants to use jcache with or
>     without
>      > >     uber jar). The same question needs to be asked for Spring
>     modules as
>      > >     well as all cache stores. The behavior needs to be
>     consistent across
>      > >     all those modules.
>      > >      >
>      > >      > If the answer is no (which is also valid because jcache is
>      > >     already present in embedded uber jar), we should migrate
>     all JBoss
>      > >     Logging references to Infinispan Common Logging (as Tristan
>     did here
>      > >     [4]) and we can make infinispan-core as a compile time
>     dependency to
>      > >     jcache. Even though migrating to Infinispan logger is not
>     necessary,
>      > >     this way we won't break users app which used
>     infinispan-embedded +
>      > >     jcache approach. Of course the same applies to Spring and Cache
>      > >     stores modules.
>      > >      >
>      > >      > I think the latter approach deserves some exploration. I
>     would
>      > >     vote for moving that way.
>      > >      >
>      > >      > Thanks,
>      > >      > Sebastian
>      > >      >
>      > >      > [1]
>      > >
>     https://github.com/infinispan/infinispan/commit/720f158cce38d86b292e1ce77b75509342007739
>      > >   
>       <https://github.com/infinispan/infinispan/commit/720f158cce38d86b292e1ce77b75509342007739>
>      > >      > [2] https://issues.jboss.org/browse/ISPN-6295
>      > >     <https://issues.jboss.org/browse/ISPN-6295>
>      > >      > [3] https://issues.jboss.org/browse/ISPN-6132
>      > >     <https://issues.jboss.org/browse/ISPN-6132>
>      > >      > [4] https://github.com/infinispan/infinispan/pull/4140/files
>      > >     <https://github.com/infinispan/infinispan/pull/4140/files>
>      > >      >
>      > >      >
>      > >      > On Wed, Jun 7, 2017 at 11:19 AM Galder Zamarreño
>      > >     <galder at redhat.com <mailto:galder at redhat.com>
>     <mailto:galder at redhat.com <mailto:galder at redhat.com>>> wrote:
>      > >      > Hi all,
>      > >      >
>      > >      > Re:
>      > >
>     https://github.com/spring-projects/spring-boot/pull/9417#discussion_r120375579
>      > >   
>       <https://github.com/spring-projects/spring-boot/pull/9417#discussion_r120375579>
>      > >      >
>      > >      > Stéphane makes a good point there, why did we make core
>     provided
>      > >     dependency? It does feel a bit of a pain that anyone that
>     depends on
>      > >     jcache embedded also needs to depend on core.
>      > >      >
>      > >      > Any more details behind this decision?
>      > >      >
>      > >      > Cheers,
>      > >      > --
>      > >      > Galder Zamarreño
>      > >      > Infinispan, Red Hat
>      > >      >
>      > >      > --
>      > >      > SEBASTIAN ŁASKAWIEC
>      > >      > INFINISPAN DEVELOPER
>      > >      > Red Hat EMEA
>      > >      >
>      > >
>      > >
>      > >     _______________________________________________
>      > >     infinispan-dev mailing list
>      > > infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>
>     <mailto:infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>>
>      > > https://lists.jboss.org/mailman/listinfo/infinispan-dev
>      > >     <https://lists.jboss.org/mailman/listinfo/infinispan-dev>
>      > >
>      > >
>      > >
>      > >
>      > > _______________________________________________
>      > > infinispan-dev mailing list
>      > > infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>
>      > > https://lists.jboss.org/mailman/listinfo/infinispan-dev
>      > >
>      >
>      > --
>      > Tristan Tarrant
>      > Infinispan Lead
>      > JBoss, a division of Red Hat
>      > _______________________________________________
>      > infinispan-dev mailing list
>      > infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>
>      > https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
>     _______________________________________________
>     infinispan-dev mailing list
>     infinispan-dev at lists.jboss.org <mailto:infinispan-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> -- 
> 
> SEBASTIANŁASKAWIEC
> 
> INFINISPAN DEVELOPER
> 
> Red HatEMEA <https://www.redhat.com/>
> 
> <https://red.ht/sig>
> 
> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 

-- 
Tristan Tarrant
Infinispan Lead
JBoss, a division of Red Hat


More information about the infinispan-dev mailing list