I'm fine with that. That method really does not fit with the paradigm
which needs that pulse.
On Mon, Sep 11, 2017 at 1:36 PM Sanne Grinovero <sanne(a)hibernate.org> wrote:
On 11 September 2017 at 16:14, Guillaume Smet
<guillaume.smet(a)gmail.com>
wrote:
> Hi!
>
> Any comment on this?
>
> After reading the javadoc of SharedSessionContractImplementor, I think we
> should probably just get rid of the `checkTransactionSynchStatus();` call
> in getInterceptor().
>
> I don't think getInterceptor() should be responsible for joining the
> transaction.
>
> What do you all think?
+1
>
> --
> Guillaume
>
> On Fri, Sep 8, 2017 at 6:26 PM, Guillaume Smet <guillaume.smet(a)gmail.com
>
> wrote:
>
>> Hi,
>>
>> Note to Gail: this is potentially a blocking issue for 5.2.11 for the
OGM
>> upgrade (I thought it was a bug in OGM but apparently, it's an issue
with
>> ORM).
>>
>> In 5.2 SessionImpl, we now use getInterceptor() instead of accessing the
>> interceptor field directly because the field has been moved to
>> AbstractSharedSessionContract.
>>
>> See for instance the change made here in afterTransactionCompletion():
>>
https://github.com/hibernate/hibernate-orm/blame/master/
>>
hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java#L2443
>>
>> I think this is an issue as getInterceptor() is not a simple getter but
is:
>> @Override
>> public Interceptor getInterceptor() {
>> checkTransactionSynchStatus();
>> return interceptor;
>> }
>>
>> protected void checkTransactionSynchStatus() {
>> pulseTransactionCoordinator();
>> delayedAfterCompletion();
>> }
>>
>> Thus calling the pulse() method of the TransactionCoordinator,
triggering
>> an implicit join whereas we're in the afterTransactionCompletion()
phase.
>>
>> This is an issue for us as the pulse() method of our
>> TransactionCoordinator creates Neo4j transactions so when the
>> getInterceptor() method is called in afterTransactionCompletion(), we
>> create a new Neo4j transaction.
>>
>> So 2 questions:
>> - should we really call checkTransactionSynchStatus(); in
>> getInterceptor()? If feels a bit weird.
>> - if so, I think we should have a true protected getter (interceptor()
>> following Steve's convention?) to avoid SessionImpl "pulsing" the
>> transaction coordinator when accessing the interceptor.
>>
>> Thanks for your feedback!
>>
>> --
>> Guillaume
>>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev