2

Hi am working with WSO2 DSS 3.0.0 and postgresql.

I have deployed several Data services and are called my Wso2esb proxy services everything works fine but after some point of time am facing an error in my dss as shown below

DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: tlocationtrack_DataService2.0
Location: /tlocationtrack_DataService2.0.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: Insertinto_tlocationtrack_OP
Current Params: {geolocation=17.720311,78.473837, userid=2579878364153500, trackdate=1441129831385, accuracy=54.0, deviceid=353323065783531}
Nested Exception:-
DS Fault Message: Error in 'createProcessedPreparedStatement'
DS Code: UNKNOWN_ERROR
Nested Exception:-
org.postgresql.util.PSQLException: This connection has been closed.


        at org.wso2.carbon.dataservices.core.description.query.SQLQuery.processNormalQuery(SQLQuery.java:808)
        at org.wso2.carbon.dataservices.core.description.query.SQLQuery.runQuery(SQLQuery.java:2098)
        at org.wso2.carbon.dataservices.core.description.query.Query.execute(Query.java:252)
        at org.wso2.carbon.dataservices.core.engine.CallQuery.executeElement(CallQuery.java:179)
        at org.wso2.carbon.dataservices.core.engine.CallQueryGroup.executeElement(CallQueryGroup.java:111)
        at org.wso2.carbon.dataservices.core.engine.OutputElement.execute(OutputElement.java:89)
        at org.wso2.carbon.dataservices.core.description.operation.Operation.execute(Operation.java:71)
        at org.wso2.carbon.dataservices.core.engine.DataService.invoke(DataService.java:569)
        at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.execute(DSOMDataSource.java:99)
        at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.serialize(DSOMDataSource.java:110)
        at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.getReader(DSOMDataSource.java:116)
        at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:225)
        at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getXMLStreamReader(OMSourcedElementImpl.java:498)
        at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getXMLStreamReaderWithoutCaching(OMSourcedElementImpl.java:507)
        at org.wso2.carbon.dataservices.core.DBUtils.cloneAndReturnBuiltElement(DBUtils.ja

va:756)
            at org.wso2.carbon.dataservices.core.dispatch.DataServiceRequest.dispatch(DataServiceRequest.java:288)
    :
    at java.lang.Thread.run(Thread.java:745)
Caused by: DS Fault Message: Error in 'createProcessedPreparedStatement'
DS Code: UNKNOWN_ERROR
Nested Exception:-
org.postgresql.util.PSQLException: This connection has been closed.

        at org.wso2.carbon.dataservices.core.description.query.SQLQuery.createProcessedPreparedStatement(SQLQuery.java:1379)
        at org.wso2.carbon.dataservices.core.description.query.SQLQuery.processNormalQuery(SQLQuery.java:766)
        ... 52 more
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
        at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:714)
        at org.postgresql.jdbc3.AbstractJdbc3Connection.prepareStatement(AbstractJdbc3Connection.java:361)
        at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
        at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at org.wso2.carbon.ndatasource.rdbms.ConnectionRollbackOnReturnInterceptor.invoke(ConnectionRollbackOnReturnInterceptor.java:51)
        at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:67)
        at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:153)
        at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
        at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:99)
        at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:63)
        at com.sun.proxy.$Proxy12.prepareStatement(Unknown Source)
        at org.wso2.carbon.dataservices.core.description.query.SQLQuery.createProcessedPreparedStatement(SQLQuery.java:1305)

after this all the data services are throwing the same error,what will be the root cause of this error and is any changes need to be done to avoid this error.

Thanks...!!

Community
  • 1
  • 1
Nag
  • 357
  • 2
  • 9
  • 28

1 Answers1

2

How is your data service database connection configured ? Are you using a Carbon DataSource (you should!) ? If so, did you define a test query and enabled the "test on borrow" configuration option ?

The exception you´re getting sometimes is caused by a database server configured to close idle connections. When you do not configure your connection pool properly, it will not detect that the connection was closed and it will handle it to client code (your data service), causing this error.

Philippe Sevestre
  • 974
  • 12
  • 18
  • Hi Philippe Sevestre thanks for the replay am using a carbon data source and its "test on borrow" is set as false,Do i need to make it true to avoid connecting to closed connection. – Nag Sep 04 '15 at 11:19
  • Hi. Yes, you do need to set "tes on borrow" to true in order to validate connections before they´re pulled from the pool. – Philippe Sevestre Sep 04 '15 at 17:38
  • Hi Philippe Sevestre i have changed the test on borrow to true and its working, Thank you. – Nag Sep 05 '15 at 07:00