Probably a good idea to have <defaultAutoCommit> configuration as part of
the existing data sources existing configs, then its obvious to anyone
looking at the configuration that Auto Commit can be toggled from this.
Currently unless you have prior knowledge of it, its not obvious that such
a configuration exists.

Also why isnt it available by default and always set to false in all data
sources? There is no reason to have auto commit turned on in this case.



On Mon, May 12, 2014 at 3:30 AM, Sumedha Rubasinghe <[email protected]>wrote:

>
>
>
> On Fri, May 9, 2014 at 10:36 PM, Isuru Perera <[email protected]> wrote:
>
>> AFAIK, relaxAutoCommit=true is applicable to only to MySQL. I'm not sure
>> it will work for PostgreSQL
>>
>> With relaxAutoCommit=true, we just suppress the exception in MySQL.
>>
>> Ideally we should disable the auto commit from the data source
>> configuration.
>>
>> Try adding
>> <defaultAutoCommit>false</defaultAutoCommit>.
>>
>> I'm not sure about the impact this will have in components other than API
>> Manager. If other components rely on Auto Commit, there will be issues.
>>
>> APIM Team, how should this be handled in with other databases, such as
>> PostgreSQL
>>
>
> We are not depending on autocommit within our DAO logic. We have explicit
> transaction commit blocks. (This also applies to Registry and UM).
> Hence autocommit should always be set to false as Nuwan has given.
>
>
>
>
>> Docs Team, Important configurations such as defaultAutoCommit are missing
>> in Carbon docs [1]. We need to add all configs, other than the elements we
>> have master-datasources.xml by default.
>>
>> [1]
>> https://docs.wso2.org/display/Carbon420/Configuring+master-datasources.xml
>>
>>
>> On Fri, May 9, 2014 at 5:37 AM, Uvindra Dias Jayasinha 
>> <[email protected]>wrote:
>>
>>> This is because auto commit is turned on by default in your installation.
>>>
>>> You need to append "relaxAutoCommit=true" to the end of the DB url in
>>> the master-datasources.xml file. Here is what an example with MySQL would
>>> look like,
>>>
>>> <datasource>
>>>             <name>WSO2AM_DB</name>
>>>             <description>The datasource used for API Manager
>>> database</description>
>>>             <jndiConfig>
>>>                 <name>jdbc/WSO2AM_DB</name>
>>>             </jndiConfig>
>>>             <definition type="RDBMS">
>>>                 <configuration>
>>>                     <url>j
>>> dbc:mysql://localhost:3306/WSO2AM_DB?autoReconnect=true&amp;
>>> *relaxAutoCommit=true*</url>
>>>                     <username>wso2carbon</username>
>>>                     <password>wso2carbon</password>
>>>
>>> <driverClassName>com.mysql.jdbc.Driver</driverClassName>
>>>                     <maxActive>50</maxActive>
>>>                     <maxWait>60000</maxWait>
>>>                     <testOnBorrow>true</testOnBorrow>
>>>                     <validationQuery>SELECT 1</validationQuery>
>>>                     <validationInterval>30000</validationInterval>
>>>                 </configuration>
>>>             </definition>
>>>         </datasource>
>>>
>>> Add the same entry to your DB URL
>>>
>>>
>>>
>>> On Fri, May 9, 2014 at 5:49 PM, Shavantha Weerasinghe <
>>> [email protected]> wrote:
>>>
>>>> Hi All
>>>>
>>>> The below exception is thrown when I attempt to create an API on
>>>> APIM140 connected to postgress database
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> [2014-05-09 17:46:15,721] ERROR - ApiMgtDAO Error while adding the API:
>>>> org.wso2.carbon.apimgt.api.model.APIIdentifier@6a10eaec to the database
>>>> org.postgresql.util.PSQLException: Cannot commit when autoCommit is
>>>> enabled.
>>>>     at
>>>> org.postgresql.jdbc2.AbstractJdbc2Connection.commit(AbstractJdbc2Connection.java:705)
>>>>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>>>>     at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.wso2.carbon.ndatasource.rdbms.ConnectionRollbackOnReturnInterceptor.invoke(ConnectionRollbackOnReturnInterceptor.java:51)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:153)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
>>>>     at $Proxy13.commit(Unknown Source)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.addAPI(ApiMgtDAO.java:3564)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.APIProviderImpl.addAPI(APIProviderImpl.java:372)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.addAPI(UserAwareAPIProvider.java:45)
>>>>     at
>>>> org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject.jsFunction_addAPI(APIProviderHostObject.java:397)
>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>     at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>     at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>     at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160)
>>>>     at
>>>> org.mozilla.javascript.FunctionObject.call(FunctionObject.java:411)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c3._c1(/publisher/modules/api/add.jag:6)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c3.call(/publisher/modules/api/add.jag)
>>>>     at
>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2347)
>>>>     at
>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:272)
>>>>     at
>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:127)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c0._c1(/publisher/modules/api/module.jag:5)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c0.call(/publisher/modules/api/module.jag)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0._c1(/publisher/site/blocks/item-add/ajax/add.jag:70)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:57)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0._c0(/publisher/site/blocks/item-add/ajax/add.jag:4)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
>>>>     at
>>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.exec(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:441)
>>>>     at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:191)
>>>>     at
>>>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:269)
>>>>     at
>>>> org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29)
>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>>>     at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>>     at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>     at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>>     at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>>     at
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>>     at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>>     at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:177)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:161)
>>>>     at
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
>>>>     at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>     at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>>>     at
>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>>>     at
>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>>>     at
>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>     at java.lang.Thread.run(Thread.java:662)
>>>> [2014-05-09 17:46:15,726] ERROR - APIProviderHostObject Error while
>>>> adding the API- test28-1.0.0
>>>> org.wso2.carbon.apimgt.api.APIManagementException: Error in adding API
>>>> :test28
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.APIProviderImpl.addAPI(APIProviderImpl.java:374)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.UserAwareAPIProvider.addAPI(UserAwareAPIProvider.java:45)
>>>>     at
>>>> org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject.jsFunction_addAPI(APIProviderHostObject.java:397)
>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>     at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>     at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>     at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160)
>>>>     at
>>>> org.mozilla.javascript.FunctionObject.call(FunctionObject.java:411)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c3._c1(/publisher/modules/api/add.jag:6)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c3.call(/publisher/modules/api/add.jag)
>>>>     at
>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2347)
>>>>     at
>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:272)
>>>>     at
>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:127)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c0._c1(/publisher/modules/api/module.jag:5)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.modules.api.c0.call(/publisher/modules/api/module.jag)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0._c1(/publisher/site/blocks/item-add/ajax/add.jag:70)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:57)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0._c0(/publisher/site/blocks/item-add/ajax/add.jag:4)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
>>>>     at
>>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.call(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.jaggeryjs.rhino.publisher.site.blocks.item_add.ajax.c0.exec(/publisher/site/blocks/item-add/ajax/add.jag)
>>>>     at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:441)
>>>>     at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:191)
>>>>     at
>>>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:269)
>>>>     at
>>>> org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29)
>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>>>     at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>>     at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>     at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>>     at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>>     at
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>>     at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>>     at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:177)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:161)
>>>>     at
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>>>     at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
>>>>     at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>     at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>>>     at
>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>>>     at
>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>>>     at
>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>     at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>     at java.lang.Thread.run(Thread.java:662)
>>>> Caused by: org.wso2.carbon.apimgt.api.APIManagementException: Error
>>>> while adding the API:
>>>> org.wso2.carbon.apimgt.api.model.APIIdentifier@6a10eaec to the database
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.handleException(ApiMgtDAO.java:3911)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.addAPI(ApiMgtDAO.java:3566)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.APIProviderImpl.addAPI(APIProviderImpl.java:372)
>>>>     ... 52 more
>>>> Caused by: org.postgresql.util.PSQLException: Cannot commit when
>>>> autoCommit is enabled.
>>>>     at
>>>> org.postgresql.jdbc2.AbstractJdbc2Connection.commit(AbstractJdbc2Connection.java:705)
>>>>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>>>>     at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.wso2.carbon.ndatasource.rdbms.ConnectionRollbackOnReturnInterceptor.invoke(ConnectionRollbackOnReturnInterceptor.java:51)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:153)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
>>>>     at
>>>> org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
>>>>     at $Proxy13.commit(Unknown Source)
>>>>     at
>>>> org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.addAPI(ApiMgtDAO.java:3564)
>>>>     ... 53 more
>>>> [2014-05-09 17:46:15,729] ERROR - add:jag
>>>> "org.wso2.carbon.apimgt.api.APIManagementException: Error while adding the
>>>> API- test28-1.0.0"
>>>>
>>>> Shavantha Weerasinghe
>>>> Senior Software Engineer QA
>>>> WSO2, Inc.
>>>> lean.enterprise.middleware.
>>>> http://wso2.com
>>>> http://wso2.org
>>>> Tel : 94 11 214 5345
>>>> Fax :94 11 2145300
>>>>
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Regards,
>>> Uvindra
>>>
>>> Mobile: 777733962
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Isuru Perera
>> Senior Software Engineer | WSO2, Inc. | http://wso2.com/
>> Lean . Enterprise . Middleware
>>
>> about.me/chrishantha
>>
>
>
>
> --
> /sumedha
> m: +94 773017743
> b :  bit.ly/sumedha
>



-- 
Regards,
Uvindra

Mobile: 777733962
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to