[infinispan-dev] Hibernate ORM 5.0.0.CR4 not working so well with Infinispan 8.0.0.Beta2...

Sanne Grinovero sanne at infinispan.org
Thu Aug 6 06:51:07 EDT 2015


On 6 August 2015 at 09:42, Tristan Tarrant <ttarrant at redhat.com> wrote:
>
>
> On 06/08/2015 10:30, Sanne Grinovero wrote:
>> On 6 August 2015 at 03:01, William Burns <mudokonman at gmail.com> wrote:
>>> It seems ORM was compiled with a version earlier than Beta1 but then ran
>>> with Beta2?  The keySet method was changed to return a subclass of
>>> CloseableIteratorSet with Beta2 to support distributed streams [1].
>>
>> BTW that CacheSet API change looks like it was intended to be
>> backwards compatible? It's not, as we just realised. I you want it to
>> be backwards compatible you'll have to revert that API change.
>
>  From the ORM version numbers (CR4) I guess we are near endgame and we
> MUST ensure that ORM works with both Infinispan 7.x and 8.x.
> Will is it possible to make the signature of the method backwards
> compatible ?
> If this is inconvenient, what can be done in Hibernate Infinispan to
> insulate it from this change ?
>
> Still, I'm wondering whether hibernate-infinispan shouldn't be
> subclassed into multiple versions so that we can be a bit more liberal
> with some changes.

It has always been maintained by the Infinispan team. You can do that,
or you could even move the sources to the Infinispan project so you
get to pick the versions;
that would solve the current version entanglement but I wonder if we'd
end up being stuck in the opposite but similar situation.. just
something to consider.

In particular the upgrade to Hibernate ORM 5 did change the Caching
SPI, but that's not happening often at all. It looks like Infinispan
moves much quicker, so owning the module in Infinispan might make
these issues less frequent.

On a different note: it turns out it's quite easy for Gradle to
compile vs Infinispan 7 but test vs Infinispan 8,
so I've setup such a job now to trigger on each Hibernate commit, but
it will depend on a hardcoded version Infinispan 8.0.0.Beta2 because
that's all we have on Nexus.

You can checkout Hibernate ORM's master and build it with:
  ./gradlew clean :hibernate-infinispan:test
-PoverrideInfinispanVersionForTesting=8.0.0.Beta2

to have it run the Infinispan integration tests only. Or replace the
property value to test vs a different Infinispan version:
'8.0.0.Beta1' works fine, '8.0.0.Beta2' produces quite some failures,
we'll probably switch to use '8.0.0-SNAPSHOT' on ci.hibernate.org when
Sebastian gets Infinispan to upload nightly builds, but ideally you
should get similar jobs setup on ci.infinispan.org.

HTH
Sanne


More information about the infinispan-dev mailing list