[Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j

Paul Stoellberger p.stoellberger at gmail.com
Tue Jun 14 19:31:12 EDT 2011


Ok after some days the i finally got some abandoned connection messages:

DBCP object created 2011-06-14 09:40:10 by the following code was never closed:
java.lang.Exception
	at org.apache.commons.dbcp.AbandonedTrace.init(AbandonedTrace.java:99)
	at org.apache.commons.dbcp.AbandonedTrace.<init>(AbandonedTrace.java:82)
	at org.apache.commons.dbcp.DelegatingResultSet.<init>(DelegatingResultSet.java:72)
	at org.apache.commons.dbcp.DelegatingResultSet.wrapResultSet(DelegatingResultSet.java:81)
	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
	at mondrian.rolap.SqlStatement.execute(SqlStatement.java:160)
	at mondrian.rolap.RolapUtil.executeQuery(RolapUtil.java:239)
	at mondrian.rolap.RolapCell.drillThroughInternal(RolapCell.java:309)
	at mondrian.olap4j.MondrianOlap4jCell.drillThroughInternal(MondrianOlap4jCell.java:156)
	at mondrian.olap4j.MondrianOlap4jStatement.executeQuery2(MondrianOlap4jStatement.java:89)
	at mondrian.olap4j.MondrianOlap4jStatement.executeQuery(MondrianOlap4jStatement.java:54)


Could this be because I never close the ResultSet returned by the drillthrough?
do i have to close it in order for the statement to be closed?
Or is this a mondrian bug that i should file?

Thats all the news on this topic.

-Paul


On Jun 10, 2011, at 19:42 , Marc Batchelor wrote:

> It should appear in catalina.out - just wait for a bit and then force a GC...
> 
> If you have a leak it will show up. Prove the leak output using a quick JSP that grabs a connection from the pool and doesnt cvall close.
> 
> 
> Sent from an unidentified device
> 
> -----Original Message-----
> From: Paul Stoellberger <p.stoellberger at gmail.com>
> Sender: "mondrian-bounces at pentaho.org" <mondrian-bounces at pentaho.org>
> Date: Fri, 10 Jun 2011 13:06:14 
> To: Mondrian developer mailing list<mondrian at pentaho.org>; olap4j-devel at lists.sourceforge.net<olap4j-devel at lists.sourceforge.net>
> Reply-To: Mondrian developer mailing list <mondrian at pentaho.org>
> Subject: Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j
> 
> My JNDI looks like that.
> No log entry whatsoever anywhere though :/
> 
>        <Resource name="jdbc/Foodmart" auth="Container" type="javax.sql.DataSource"
>                           factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="40" maxIdle="10"
>                           maxWait="10000" username="pentaho_user" password="password"
>                           driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/foodmart"
>                           removeAbandoned="true"  logAbandoned="true"  
>                           removeAbandonedTimeout="120"
>                           testOnBorrow="true"
>                           testWhileIdle="true"    
>                           validationQuery="select count(*) from foodmart.store;"/>
> 
> 
> -Paul
> 
> 
> On Jun 10, 2011, at 18:48 , Marc Batchelor wrote:
> 
>> If you can configure your connection using DBCP in Tomcat, the resource definition does in fact allow you to identify abandoned connections:
>> 
>> Look at the logAbandoned, removeAbandoned, and removeAbandonedTimeout settings:
>> 
>> <Resource name="jdbc/SampleData" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="5" maxWait="10000"
>>       username="pentaho_user" password="xxxxxx"
>>       factory="org.apache.commons.dbcp.BasicDataSourceFactory"
>>       driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/sampledata"
>>       logAbandoned="true"
>>       removeAbandoned="true" 
>>       removeAbandonedTimeout="300"
>>       validationQuery="/* ping */" 
>> />
>> 
>> What's nice is that when a connection is deemed abandoned, either by the reaping thread setup in the removeAbandonedTimeout, or when a finalizer kicks in on the connection instance, it will send to the log a stack dump of the code that grabbed the connection in the first place.
>> 
>> Marc
>> 
>> -----Original Message-----
>> From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org] On Behalf Of Paul Stoellberger
>> Sent: Friday, June 10, 2011 1:25 PM
>> To: Julian Hyde
>> Cc: olap4j-devel at lists.sourceforge.net; 'Mondrian developer mailing list'
>> Subject: Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j
>> 
>> Hi,
>> 
>> I was trying all afternoon to come up with a Testcase or even figure out how I could get more debug info from DBCP / Mondrian.
>> Unfortunately I was not successful at all.
>> 
>> There is no logging in DBCP or mondrian regarding the pool.
>> I think this issue is related to the internal Pool (RolapConnectionPool) since its happening to JDBC connection as well as JNDI.
>> 
>> Any input on how I could debug / test it would be appreciated.
>> Otherwise I need to file a bug without any more detailed info.
>> 
>> -Paul
>> 
>> 
>> On Jun 8, 2011, at 20:57 , Julian Hyde wrote:
>> 
>>> Sounds like JDBC connections are being taken from the connection pool 
>>> but not returned. The pool is finite: there can be no more than N open 
>>> connections at a time. When they ask for connection N+1 it will block 
>>> and eventually time out.
>>> 
>>> The connection leak is likely to be in Mondrian's code, and not your fault.
>>> Likely there is an error and Mondrian is not returning the connection 
>>> to the pool.
>>> 
>>> Keeping olap4j connections open shouldn't be the problem. Mondrian 
>>> does not keep JDBC connections open for the duration of an olap4j 
>>> connection -- it opens & closes them (more precisely borrows & returns 
>>> them) for each access to the database.
>>> 
>>> Please log a bug with a testcase. Or maybe there's tracing in dbcp you 
>>> can enable to show the callstack for each of the still-open connections.
>>> 
>>> Julian
>>> 
>>>> -----Original Message-----
>>>> From: mondrian-bounces at pentaho.org
>>>> [mailto:mondrian-bounces at pentaho.org] On Behalf Of Paul Stoellberger
>>>> Sent: Wednesday, June 08, 2011 10:12 AM
>>>> To: olap4j-devel at lists.sourceforge.net; Mondrian developer mailing 
>>>> list
>>>> Subject: [Mondrian] connection issues with mondrianOlap4j
>>>> 
>>>> Hi,
>>>> 
>>>> since quite a while we are experiencing very strange behaviour on our 
>>>> demo.
>>>> At some point olap4j / mondrian cant execute any queries anymore.
>>>> We were initially using normal jdbc based connections for mondrian / 
>>>> olap4j. Which resulted in "freeze" behaviour without any info in any 
>>>> log file what went wrong whenever mondrian tried to execute something 
>>>> on the database
>>>> 
>>>> Now with JNDI i get the following exception:
>>>>      at
>>>> mondrian.rolap.RolapConnection.execute(RolapConnection.java:582)
>>>>      ... 79 more
>>>> Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a 
>>>> connection, pool error Timeout waiting for idle object
>>>>      at
>>>> org.apache.commons.dbcp.PoolingDataSource.getConnection(Poolin
>>>> gDataSource.java:104)
>>>>      at
>>>> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDat
>>>> aSource.java:880)
>>>>      at mondrian.rolap.SqlStatement.execute(SqlStatement.java:123)
>>>>      ... 90 more
>>>> Caused by: java.util.NoSuchElementException: Timeout waiting for idle 
>>>> object
>>>>      at
>>>> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(Ge
>>>> nericObjectPool.java:958)
>>>>      at
>>>> org.apache.commons.dbcp.PoolingDataSource.getConnection(Poolin
>>>> gDataSource.java:96)
>>>>      ... 92 more
>>>> 
>>>> 
>>>> In our workflow we create one olap4j connection on server startup and 
>>>> use that to create new Query objects.
>>>> We never close any connections, nor remove query objects that are 
>>>> abandoned by users, we keep them indefinitely at the moment.
>>>> I was looking at the log files and saw that the error occurred 
>>>> suddenly, not after a timeout or something. There was something 
>>>> successfully executed 5 mins before on the database.
>>>> Mysql doesn't report anything on "SHOW PROCESSLIST", so i'm assuming 
>>>> the connection pool is not exhausted from the DB point of view, but 
>>>> rather because of mondrian.
>>>> 
>>>> Is there anything in our workflow that could  cause mondrian to 
>>>> behave like that?
>>>> Does it not close its jdbc connections?
>>>> 
>>>> This error occurs with both, mysql and hsqldb.
>>>> 
>>>> I'm running out of ideas what i could do to fix or even debug this 
>>>> issues.
>>>> 
>>>> If anyone has any idea on what I could try, please step forward ;-)
>>>> 
>>>> -Paul
>>>> 
>>>> _______________________________________________
>>>> Mondrian mailing list
>>>> Mondrian at pentaho.org
>>>> http://lists.pentaho.org/mailman/listinfo/mondrian
>>>> 
>>> 
>>> 
>>> ----------------------------------------------------------------------
>>> -------- EditLive Enterprise is the world's most technically advanced 
>>> content authoring tool. Experience the power of Track Changes, Inline 
>>> Image Editing and ensure content is compliant with Accessibility 
>>> Checking.
>>> http://p.sf.net/sfu/ephox-dev2dev
>>> _______________________________________________
>>> olap4j-devel mailing list
>>> olap4j-devel at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/olap4j-devel
>> 
>> _______________________________________________
>> Mondrian mailing list
>> Mondrian at pentaho.org
>> http://lists.pentaho.org/mailman/listinfo/mondrian
>> _______________________________________________
>> Mondrian mailing list
>> Mondrian at pentaho.org
>> http://lists.pentaho.org/mailman/listinfo/mondrian
> 
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian



More information about the Mondrian mailing list