yes I know.

I was just walking through the code, to see what I could see, and all StateManagers use the global Broker lock.. so no attempt at granularity in many places :(

Also, breaking the lock into Read/Write might give multithreaded use a little more performance as well..

like you said, this is "battle tested code", which I am assuming is probably like 4 years old ( from the old kodo days ). So I could understand the hesitation to not change it, but .... you know ... :)



ps -
<crazy-brainstorm>
Another option for Slices, is to move up the 'distributed' level, so that it maintains unique brokers or entity managers per database.. At that point it could be a JPA Slices implementation, independent of OpenJPA :)

It would be an DistributedEntityManager that would delegate to sub EntityManagers, and return objects managed by the DistributedEntityManager, but that behind the scenes would delegate to objects owned and managed by sub EntityManagers..

So it would be like creating a JPAStoreManager that would store things into a sub entitymanager :) etc etc
</crazy-brainstorm>



Pinaki Poddar wrote:
Since behind the scenes you are executing various different queries using
multiple
threads, and they might be touching/using shared resources lower down.

Good point, and most probably you are right.

which is to fix up QueryImpl, not to do aggressive locking (at least in
the isUnique method), and I think it will at least remove the current blocking issue.

So far, Slice has imposed almost no demand on existing kernel -- which is
battle hardened code. So naturally, I am apprehensive of change in threading
logic in kernel.QueryImpl. Any change of this nature *must* validate itself
against a set of multithreaded tests (with or without Slice).

Reply via email to