You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Brett Palmer <br...@gmail.com> on 2009/11/11 22:27:45 UTC

Entity engine SELECT for UPDATE feature

We are running into a concurrency problem with a service that needs to do a
read for update.  Currently, the service returns a record and then the
calling service updates the record.  We are seeing a problem when multiple
requests can update the same record.

In ofbiz is there a where to specify a SELECT for UPDATE read that will lock
the record until the transaction closes?


Thanks,


Brett

Re: Entity engine SELECT for UPDATE feature

Posted by Scott Gray <sc...@hotwaxmedia.com>.
I have to admit I only came to be aware of it because it was causing  
me problems while developing with derby so I can't say how the  
behavior differs across dbs.  I did a quick search on it but couldn't  
find anything of substance, sorry.

Regards
Scott

On 12/11/2009, at 11:29 AM, Brett Palmer wrote:

> Scott,
>
> Thanks for the reply.  Do you know if this is supported on mysql 5.0  
> innodb?
>
> We are doing the update in the same transaction but not seeing the
> locking behavior.
>
> Brett
>
> On 11/11/09, Scott Gray <sc...@hotwaxmedia.com> wrote:
>> Hi Brett
>>
>> You need to make sure that the select to happens in the same
>> transaction as the update, by default selects use CONCUR_READ_ONLY
>> which means the row can only be updated by the transaction that
>> selected it.  That lock ends when the transaction ends regardless of
>> whether you still have a copy of the entity.
>>
>> Regards
>> Scott
>>
>> HotWax Media
>> http://www.hotwaxmedia.com
>>
>> On 12/11/2009, at 10:27 AM, Brett Palmer wrote:
>>
>>> We are running into a concurrency problem with a service that needs
>>> to do a
>>> read for update.  Currently, the service returns a record and then  
>>> the
>>> calling service updates the record.  We are seeing a problem when
>>> multiple
>>> requests can update the same record.
>>>
>>> In ofbiz is there a where to specify a SELECT for UPDATE read that
>>> will lock
>>> the record until the transaction closes?
>>>
>>>
>>> Thanks,
>>>
>>>
>>> Brett
>>
>>
>
> -- 
> Sent from my mobile device


Re: Entity engine SELECT for UPDATE feature

Posted by Brett Palmer <br...@gmail.com>.
Scott,

Thanks for the reply.  Do you know if this is supported on mysql 5.0 innodb?

We are doing the update in the same transaction but not seeing the
locking behavior.

Brett

On 11/11/09, Scott Gray <sc...@hotwaxmedia.com> wrote:
> Hi Brett
>
> You need to make sure that the select to happens in the same
> transaction as the update, by default selects use CONCUR_READ_ONLY
> which means the row can only be updated by the transaction that
> selected it.  That lock ends when the transaction ends regardless of
> whether you still have a copy of the entity.
>
> Regards
> Scott
>
> HotWax Media
> http://www.hotwaxmedia.com
>
> On 12/11/2009, at 10:27 AM, Brett Palmer wrote:
>
>> We are running into a concurrency problem with a service that needs
>> to do a
>> read for update.  Currently, the service returns a record and then the
>> calling service updates the record.  We are seeing a problem when
>> multiple
>> requests can update the same record.
>>
>> In ofbiz is there a where to specify a SELECT for UPDATE read that
>> will lock
>> the record until the transaction closes?
>>
>>
>> Thanks,
>>
>>
>> Brett
>
>

-- 
Sent from my mobile device

Re: Entity engine SELECT for UPDATE feature

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Hi Brett

You need to make sure that the select to happens in the same  
transaction as the update, by default selects use CONCUR_READ_ONLY  
which means the row can only be updated by the transaction that  
selected it.  That lock ends when the transaction ends regardless of  
whether you still have a copy of the entity.

Regards
Scott

HotWax Media
http://www.hotwaxmedia.com

On 12/11/2009, at 10:27 AM, Brett Palmer wrote:

> We are running into a concurrency problem with a service that needs  
> to do a
> read for update.  Currently, the service returns a record and then the
> calling service updates the record.  We are seeing a problem when  
> multiple
> requests can update the same record.
>
> In ofbiz is there a where to specify a SELECT for UPDATE read that  
> will lock
> the record until the transaction closes?
>
>
> Thanks,
>
>
> Brett