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