On Fri, Feb 26, 2010 at 9:52 AM, Senaka Fernando <sen...@wso2.com> wrote:

> Hi Dimuthu,
>
> On Fri, Feb 26, 2010 at 9:38 AM, Dimuthu Gamage <dimu...@wso2.com> wrote:
>
>> Hi,
>>
>> I think What 'READ_COMMITED' do is, in a case of doing reading, it will
>> continue reading the commited data from the tables locked by others. So I
>> think what 'READ_COMMITED' guarantee is , if all the operation are 'READ'
>> then it will not dead lock. But Apparently we are doing some 'WRITE'
>> operations in that test case. so deadlocks are possible.
>>
>> I'm trying to list the sequence of database accesses for simple GET, PUT,
>> DELETE registry operations at here[1]. So we can identify which operation
>> can cause the deadlocks.
>>
>
> Since we support transactions spanning across multiple operations, this
> could be theoretically any N number of operations. What we should be doing
> here, is defining a protocol to handle situations causing a deadlock. This
> shouldn't result in a performance overhead if this is properly designed and
> well written. Also, the benefits are that we will not be loosing
> transactions, by means of a retrying logic.
>

+1. If we can guarantee for all the atomic registry operations the
frequently accessed tables like REG_RESOURCE, REG_CONTENT and probably
REG_RESOURCE_HISTORY and REG_CONTENT_HISTORY are writing in the same order
we will be able to guarantee the deadlocks happens minimum even combining
many registry operations. So we will start with that.

Thanks
Dimuthu

>
> Thanks,
> Senaka.
>
>>
>> Thanks
>> Dimuthu
>>
>> [1]
>> https://spreadsheets.google.com/a/wso2.com/ccc?key=tX5iHIbwTIDDuyF8uwsERiw&hl=en
>>
>>
>> On Fri, Feb 26, 2010 at 9:14 AM, Amila Suriarachchi <am...@wso2.com>wrote:
>>
>>>
>>>
>>> On Fri, Feb 26, 2010 at 8:21 AM, Dimuthu Gamage <dimu...@wso2.com>wrote:
>>>
>>>>
>>>>
>>>> On Fri, Feb 26, 2010 at 7:50 AM, Amila Suriarachchi <am...@wso2.com>wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Feb 24, 2010 at 12:03 PM, Sumedha Rubasinghe <sume...@wso2.com
>>>>> > wrote:
>>>>>
>>>>>>
>>>>>> On Wed, Feb 24, 2010 at 11:57 AM, Ruwan Linton <ru...@wso2.com>wrote:
>>>>>>
>>>>>>> Senaka Fernando wrote:
>>>>>>> > This could be due to overlapping transactions in this particular
>>>>>>> > component that attempts to write to the registry at once.
>>>>>>> So does this mean that Registry cannot handle concurrent connections
>>>>>>> to
>>>>>>> a particular registry resource/collection? Well, even in that case it
>>>>>>> shouldn't deadlock :-(
>>>>>>>
>>>>>>
>>>>>> If an insert (write) happens the database locks the table allowing
>>>>>> only read. So the only option available for us is to speed up write
>>>>>> operation. working on it..
>>>>>>
>>>>>
>>>>> hi Sumedha,
>>>>>
>>>>> What is the transaction isolation level you use for these transactions?
>>>>>
>>>>
>>>> It is read committed.
>>>>
>>> Do you know why this deadlocks occur?. At this isolation level
>>> transactions do not have to lock the tables isn't it?
>>>
>>> Amila.
>>>
>>>
>>>> Thanks
>>>> Dimuthu
>>>>
>>>>>
>>>>> Amila.
>>>>>
>>>>>>
>>>>>> /sumedha
>>>>>>
>>>>>>
>>>>>>> Thanks,
>>>>>>> Ruwan
>>>>>>> >
>>>>>>> > Thanks,
>>>>>>> > Senaka.
>>>>>>> >
>>>>>>> > On Wed, Feb 24, 2010 at 11:28 AM, Hiranya Jayathilaka
>>>>>>> > <hira...@wso2.com <mailto:hira...@wso2.com>> wrote:
>>>>>>> >
>>>>>>> >     Following exception encountered in the ESB while updating a
>>>>>>> proxy
>>>>>>> >     service:
>>>>>>> >
>>>>>>> >
>>>>>>> >     Exception in thread "Thread-23"
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.ServiceBusPersistenceException:
>>>>>>> >     Error while saving mediation configuration changes
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager.handleException(MediationPersistenceManager.java:278)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager.access$1200(MediationPersistenceManager.java:48)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager$MediationPersistenceWorker.run(MediationPersistenceManager.java:320)
>>>>>>> >     Caused by:
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.ServiceBusPersistenceException:
>>>>>>> >     Unable to persist the proxy service in the path :
>>>>>>> >     /repository/synapse/proxy-services/FooProxy
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.registry.AbstractRegistryStore.handleException(AbstractRegistryStore.java:101)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.registry.ProxyServiceRegistryStore.persistElement(ProxyServiceRegistryStore.java:72)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.AbstractStore.saveToRegistry(AbstractStore.java:154)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.AbstractStore.save(AbstractStore.java:82)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager.persistElement(MediationPersistenceManager.java:335)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager.access$1000(MediationPersistenceManager.java:48)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.MediationPersistenceManager$MediationPersistenceWorker.run(MediationPersistenceManager.java:314)
>>>>>>> >     Caused by:
>>>>>>> >     org.wso2.carbon.registry.core.exceptions.RegistryException:
>>>>>>> Unable
>>>>>>> >     to persist element
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.registry.AbstractRegistryStore.persistElement(AbstractRegistryStore.java:95)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.registry.ProxyServiceRegistryStore.persistElement(ProxyServiceRegistryStore.java:69)
>>>>>>> >     ... 5 more
>>>>>>> >     Caused by:
>>>>>>> >     org.wso2.carbon.registry.core.exceptions.RegistryException:
>>>>>>> Failed
>>>>>>> >     to add log entry for resource
>>>>>>> >     /_system/config/repository/synapse/proxy-services. Deadlock
>>>>>>> >     detected. The current transaction was rolled back. Details:
>>>>>>> >     Session #9 (user: WSO2CARBON) is waiting to lock
>>>>>>> >     PUBLIC.REG_RESOURCE while locking PUBLIC.REG_ASSOCIATION
>>>>>>> >     (exclusive), PUBLIC.REG_LOG (exclusive).
>>>>>>> >     Session #12 (user: WSO2CARBON) is waiting to lock
>>>>>>> PUBLIC.REG_LOG
>>>>>>> >     while locking PUBLIC.REG_CONTENT_HISTORY (exclusive),
>>>>>>> >     PUBLIC.REG_RESOURCE_HISTORY (exclusive), PUBLIC.REG_RESOURCE
>>>>>>> >     (exclusive), PUBLIC.REG_CONTENT (exclusive),
>>>>>>> PUBLIC.REG_SNAPSHOT
>>>>>>> >     (exclusive).; SQL statement:
>>>>>>> >     INSERT INTO REG_LOG (REG_PATH, REG_USER_ID, REG_LOGGED_TIME,
>>>>>>> >     REG_ACTION, REG_ACTION_DATA, REG_TENANT_ID) VALUES (?, ?, ?, ?,
>>>>>>> ?,
>>>>>>> >     ?) [40001-112]
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.dao.LogsDAO.addLog(LogsDAO.java:79)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.Repository.update(Repository.java:966)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.Repository.updateParent(Repository.java:947)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.Repository.delete(Repository.java:403)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.delete(EmbeddedRegistry.java:807)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.session.UserRegistry.delete(UserRegistry.java:625)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.mediation.initializer.persistence.registry.AbstractRegistryStore.persistElement(AbstractRegistryStore.java:79)
>>>>>>> >     ... 6 more
>>>>>>> >     Caused by: org.h2.jdbc.JdbcSQLException: Deadlock detected. The
>>>>>>> >     current transaction was rolled back. Details:
>>>>>>> >     Session #9 (user: WSO2CARBON) is waiting to lock
>>>>>>> >     PUBLIC.REG_RESOURCE while locking PUBLIC.REG_ASSOCIATION
>>>>>>> >     (exclusive), PUBLIC.REG_LOG (exclusive).
>>>>>>> >     Session #12 (user: WSO2CARBON) is waiting to lock
>>>>>>> PUBLIC.REG_LOG
>>>>>>> >     while locking PUBLIC.REG_CONTENT_HISTORY (exclusive),
>>>>>>> >     PUBLIC.REG_RESOURCE_HISTORY (exclusive), PUBLIC.REG_RESOURCE
>>>>>>> >     (exclusive), PUBLIC.REG_CONTENT (exclusive),
>>>>>>> PUBLIC.REG_SNAPSHOT
>>>>>>> >     (exclusive).; SQL statement:
>>>>>>> >     INSERT INTO REG_LOG (REG_PATH, REG_USER_ID, REG_LOGGED_TIME,
>>>>>>> >     REG_ACTION, REG_ACTION_DATA, REG_TENANT_ID) VALUES (?, ?, ?, ?,
>>>>>>> ?,
>>>>>>> >     ?) [40001-112]
>>>>>>> >     at org.h2.message.Message.getSQLException(Message.java:107)
>>>>>>> >     at org.h2.message.Message.getSQLException(Message.java:118)
>>>>>>> >     at org.h2.message.Message.getSQLException(Message.java:77)
>>>>>>> >     at org.h2.table.TableData.doLock(TableData.java:428)
>>>>>>> >     at org.h2.table.TableData.lock(TableData.java:375)
>>>>>>> >     at org.h2.command.dml.Insert.update(Insert.java:99)
>>>>>>> >     at
>>>>>>> org.h2.command.CommandContainer.update(CommandContainer.java:71)
>>>>>>> >     at org.h2.command.Command.executeUpdate(Command.java:207)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:139)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:128)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
>>>>>>> >     at
>>>>>>> >
>>>>>>> org.wso2.carbon.registry.core.jdbc.dao.LogsDAO.addLog(LogsDAO.java:72)
>>>>>>> >     ... 12 more
>>>>>>> >
>>>>>>> >     Thanks
>>>>>>> >     --
>>>>>>> >     Hiranya Jayathilaka
>>>>>>> >     Software Engineer;
>>>>>>> >     WSO2 Inc.;  http://wso2.org
>>>>>>> >     E-mail: hira...@wso2.com <mailto:hira...@wso2.com>;  Mobile:
>>>>>>> +94
>>>>>>> >     77 633 3491
>>>>>>> >     Blog: http://techfeast-hiranya.blogspot.com
>>>>>>> >
>>>>>>> >     _______________________________________________
>>>>>>> >     Carbon-dev mailing list
>>>>>>> >     Carbon-dev@wso2.org <mailto:Carbon-dev@wso2.org>
>>>>>>> >     https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > --
>>>>>>> > Senaka Fernando
>>>>>>> > Software Engineer
>>>>>>> > WSO2 Inc.
>>>>>>> > E-mail: senaka AT wso2.com <http://wso2.com>;  Mobile: +94 77 322
>>>>>>> 1818
>>>>>>> >
>>>>>>> > http://www.wso2.com/ - "Lean . Enterprise . Middleware"
>>>>>>> >
>>>>>>> ------------------------------------------------------------------------
>>>>>>> >
>>>>>>> > _______________________________________________
>>>>>>> > Carbon-dev mailing list
>>>>>>> > Carbon-dev@wso2.org
>>>>>>> > https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>>> >
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ruwan Linton
>>>>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>>>>>> WSO2 Inc.; http://wso2.org
>>>>>>> email: ru...@wso2.com; cell: +94 77 341 3097
>>>>>>> blog: http://blog.ruwan.org
>>>>>>>
>>>>>>> Lean . Enterprise . Middleware
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Carbon-dev mailing list
>>>>>>> Carbon-dev@wso2.org
>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Carbon-dev mailing list
>>>>>> Carbon-dev@wso2.org
>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Carbon-dev mailing list
>>>>> Carbon-dev@wso2.org
>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Carbon-dev mailing list
>>>> Carbon-dev@wso2.org
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Carbon-dev mailing list
>>> Carbon-dev@wso2.org
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>
>>>
>>
>> _______________________________________________
>> Carbon-dev mailing list
>> Carbon-dev@wso2.org
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>
>>
>
>
> --
> Senaka Fernando
> Software Engineer
> WSO2 Inc.
> E-mail: senaka AT wso2.com;  Mobile: +94 77 322 1818
>
>
> http://www.wso2.com/ - "Lean . Enterprise . Middleware"
>
> _______________________________________________
> Carbon-dev mailing list
> Carbon-dev@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>
>
_______________________________________________
Carbon-dev mailing list
Carbon-dev@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to