Hi,

Thanks; see OPENJPA-411 and OPENJPA-412.

-Patrick

On 10/22/07, Christiaan <[EMAIL PROTECTED]> wrote:
>
> Hi,
> I am writing this since this may be useful to others. I've quite some
> classes which have a List attribute. OpenJPA create a relationship table
> with an order column to maintain the order of the elements. Recently we
> encountered quite some blocking scenarios when using it in a multi-user
> environment. The reason was that when List.add(index, object) is being used
> OpenJPA sends the following sql statement, so the order of the elements can
> be built up from scratch:
> "Delete from RELATION_TABLE where ID = "
>
> In ms sql server this causes an exclusive lock on the entire table which of
> course easily introduces blocking issues (long running transactions having a
> shared lock or other client who like to insert objects in their list as
> well).
>
> List.add(Object) does not have this behaviour so when adding objects to the
> end of the list it is always better to use this method. My suggestions:
> 1)      In the proxy list openjpa creates add a check to List.add(index, 
> object)
> whether index is equal to List.size() so it can use the same logic as add()
> 2)      May be provide some other mode for updating the order of elements when
> elements are being inserted, eg. execute update statements instead of a
> deletion?
>
> Kind regards,
> Christiaan
>
> --
> View this message in context: 
> http://www.nabble.com/Use-of-List-increases-chance-on-concurrency-contention-tf4670571.html#a13342370
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>
>


-- 
Patrick Linskey
202 669 5907

Reply via email to