Hi, we've done some runs now with 5.0.6-SNAPSHOT (built today) and we're 
seeing a lot more contention compared to the same build without Stuart's 
patch.
If possible I would like to see this being merged, but if it's not 
possible Steve's suggestion should also work afaik.

ståle

On 14.12.15 15:12, Sanne Grinovero wrote:
>I love Steve's idea of having a dedicated implementation for
>non-multitenant users.
>
>But +1 to also apply this improvement.
>
>Sanne
>
>On 14 December 2015 at 01:44, Stuart Douglas <sdoug...@redhat.com> wrote:
>>
>>
>> ----- Original Message -----
>>> From: "Scott Marlow" <smar...@redhat.com>
>>> To: "Stuart Douglas" <sdoug...@redhat.com>, hibernate-dev@lists.jboss.org
>>> Sent: Friday, 11 December, 2015 10:54:15 PM
>>> Subject: Re: [hibernate-dev] Pooled Optimiser Improvements
>>>
>>> Should this be a specialized pooled optimizer that is only used in
>>> environments that do not suffer from leaving the ThreadLocal around
>>> after the application is undeployed?  In other words, the expectation is
>>> that classloader leaks with this pooled optimizer are expected (e.g.
>>> user must restart the jvm to really undeploy the application completely).
>>>
>>> I am thinking that there are at least three typical situations:
>>>
>>> 1.  Applications are deployed in Java standalone edition.  Generally,
>>> when the app undeploys the jvm is shutting down.
>>
>> In this case it is a non-issue, as the JVM will be destroyed on shutdown.
>>
>>>
>>> 2. Applications are deployed as part of some container (e.g. an EE
>>> server) and the Hibernate jars are on the global classloader path (or
>>> something like that).  On each shared container thread, there would be
>>> one Optimizer for all deployed applications.  I wonder if instead, we
>>> would want one Optimizer instance per Hibernate SessionFactory
>>> associated with the many container threads?
>>
>> AFAIK there is one optimiser per table, not one global optimiser. On 
>> undeploy these Optimisers will no longer be referenced and should be 
>> eligible for GC, which will clean up the thread local.
>>
>> It is importable to note that this is not a static thread local, which are 
>> very prone to leaks.
>>
>>>
>>> 3. Applications are deployed as part of some container (e.g. an EE
>>> server) and the Hibernate jars are deployed with the application. The
>>> ThreadLocals are associated with threads that are shared by different
>>> deployed applications. The application classloader contains the
>>> Hibernate classes. Each deployed application has its own Optimizer
>>> threadlocal. On each shared container thread, there would be one
>>> Optimizer per application (since each application has its Optimizer TL).
>>>   Like (2), there would be sharing of the same Optimizer with the many
>>> application session factories.  Should we instead have an optimizer per
>>> session factory?
>>
>> The same this applied here, once the application is undeployed the 
>> ThreadLocal should be eligible for GC.
>>
>> Stuart
>>
>>>
>>> Scott
>>>
>>> On 12/10/2015 11:31 PM, Stuart Douglas wrote:
>>> > Hello,
>>> >
>>> > I have been working on a change to the pooled optimizer that we have been
>>> > seeing good performance results with. Basically it hands out blocks of
>>> > ID's to a thread local, rather than having every thread contend on the
>>> > lock every time an ID is required.
>>> >
>>> > https://github.com/hibernate/hibernate-orm/compare/master...stuartwdouglas:pooled-optimiser-hack
>>> >
>>> > What would I need to do to get a change like this in? In particular:
>>> >
>>> > - Does it need to be a new type of optimizer, or is modifying the existing
>>> > one like I have done OK?
>>> > - How should it be configured?
>>> >
>>> > I am happy to do up a PR for this, but I am just not really sure what 
>>> > would
>>> > be required to get it to a point where it would be acceptable for
>>> > inclusion.
>>> >
>>> > Stuart
>>> > _______________________________________________
>>> > hibernate-dev mailing list
>>> > hibernate-dev@lists.jboss.org
>>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>> >
>>>
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>_______________________________________________
>hibernate-dev mailing list
>hibernate-dev@lists.jboss.org
>https://lists.jboss.org/mailman/listinfo/hibernate-dev
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to