+1 for running perf tests. We can't rely on the atom based remote registry
based perf tests that we used to run earlier, which doesn't have the
transactional database access across registry operations. We can use the
same tests to run with embedded registry.

With multiple registry operations are runing in one transaction, this kind
of deadlock are possible. As senaka pointed out the solution can be
introducing a retry mechanism (handle exception and retry after a random
interval).

Thanks
Dimuthu


On Wed, Feb 24, 2010 at 12:08 PM, Senaka Fernando <sen...@wso2.com> wrote:

> Hi it seems that you have persisted a resource + created an association at
> the same time in two threads. How could this happen? Is it a part of the
> same process? or two things? And +1 for running perf tests. But, this time
> we need to eradicate the possibilities of such or at least introduce some
> retry mechanism (or handle exceptions), instead of simply treating this as a
> perf issue. Not everybody have the same hardware configurations that we do,
> and there can be possibilities of such.
>
> Thanks,
> Senaka.
>
> On Wed, Feb 24, 2010 at 11:52 AM, Sumedha Rubasinghe <sume...@wso2.com>wrote:
>
>> Hi Hiranya,
>> Did you press save config button multiple times?
>>
>> /sumedha
>>
>>
>>
>> On Wed, Feb 24, 2010 at 11:28 AM, Hiranya Jayathilaka 
>> <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;  Mobile: +94 77 633 3491
>>> Blog: http://techfeast-hiranya.blogspot.com
>>>
>>> _______________________________________________
>>> 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