Hitachi Vantara Pentaho Community Forums
Results 1 to 8 of 8

Thread: [Mondrian] connection issues with mondrianOlap4j

  1. #1
    Paul Stoellberger Guest

    Default [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(PoolingDataSource.java:104)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.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(GenericObjectPool.java:958)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.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 (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  2. #2
    Julian Hyde Guest

    Default Re: [Mondrian] connection issues with mondrianOlap4j

    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 (DOT) org
    > [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    > Sent: Wednesday, June 08, 2011 10:12 AM
    > To: olap4j-devel (AT) lists (DOT) 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 (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian
    >


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  3. #3
    Paul Stoellberger Guest

    Default 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 (DOT) org
    >> [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >> Sent: Wednesday, June 08, 2011 10:12 AM
    >> To: olap4j-devel (AT) lists (DOT) 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 (DOT) 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 (DOT) sourceforge.net
    > https://lists.sourceforge.net/lists/...o/olap4j-devel


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  4. #4
    Marc Batchelor Guest

    Default Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j

    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 (DOT) org [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    Sent: Friday, June 10, 2011 1:25 PM
    To: Julian Hyde
    Cc: olap4j-devel (AT) lists (DOT) 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 (DOT) org
    >> [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >> Sent: Wednesday, June 08, 2011 10:12 AM
    >> To: olap4j-devel (AT) lists (DOT) 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 (DOT) 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 (DOT) sourceforge.net
    > https://lists.sourceforge.net/lists/...o/olap4j-devel


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian
    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  5. #5
    Paul Stoellberger Guest

    Default 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 (DOT) org [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    > Sent: Friday, June 10, 2011 1:25 PM
    > To: Julian Hyde
    > Cc: olap4j-devel (AT) lists (DOT) 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 (DOT) org
    >>> [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >>> Sent: Wednesday, June 08, 2011 10:12 AM
    >>> To: olap4j-devel (AT) lists (DOT) 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 (DOT) 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 (DOT) sourceforge.net
    >> https://lists.sourceforge.net/lists/...o/olap4j-devel

    >
    > _______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian
    > _______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  6. #6
    Marc Batchelor Guest

    Default Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j

    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 (DOT) com>
    Sender: "mondrian-bounces (AT) pentaho (DOT) org" <mondrian-bounces (AT) pentaho (DOT) org>
    Date: Fri, 10 Jun 2011 13:06:14
    To: Mondrian developer mailing list<mondrian (AT) pentaho (DOT) org>; olap4j-devel (AT) lists (DOT) source...ourceforge.net>
    Reply-To: Mondrian developer mailing list <mondrian (AT) pentaho (DOT) 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 (DOT) org [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    > Sent: Friday, June 10, 2011 1:25 PM
    > To: Julian Hyde
    > Cc: olap4j-devel (AT) lists (DOT) 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 (DOT) org
    >>> [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >>> Sent: Wednesday, June 08, 2011 10:12 AM
    >>> To: olap4j-devel (AT) lists (DOT) 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 (DOT) 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 (DOT) sourceforge.net
    >> https://lists.sourceforge.net/lists/...o/olap4j-devel

    >
    >_______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian
    >_______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian
    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  7. #7
    Paul Stoellberger Guest

    Default Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j

    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 (DOT) com>
    > Sender: "mondrian-bounces (AT) pentaho (DOT) org" <mondrian-bounces (AT) pentaho (DOT) org>
    > Date: Fri, 10 Jun 2011 13:06:14
    > To: Mondrian developer mailing list<mondrian (AT) pentaho (DOT) org>; olap4j-devel (AT) lists (DOT) source...ourceforge.net>
    > Reply-To: Mondrian developer mailing list <mondrian (AT) pentaho (DOT) 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 (DOT) org [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >> Sent: Friday, June 10, 2011 1:25 PM
    >> To: Julian Hyde
    >> Cc: olap4j-devel (AT) lists (DOT) 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 (DOT) org
    >>>> [mailto:mondrian-bounces (AT) pentaho (DOT) org] On Behalf Of Paul Stoellberger
    >>>> Sent: Wednesday, June 08, 2011 10:12 AM
    >>>> To: olap4j-devel (AT) lists (DOT) 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 (DOT) 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 (DOT) sourceforge.net
    >>> https://lists.sourceforge.net/lists/...o/olap4j-devel

    >>
    >> _______________________________________________
    >> Mondrian mailing list
    >> Mondrian (AT) pentaho (DOT) org
    >> http://lists.pentaho.org/mailman/listinfo/mondrian
    >> _______________________________________________
    >> Mondrian mailing list
    >> Mondrian (AT) pentaho (DOT) org
    >> http://lists.pentaho.org/mailman/listinfo/mondrian

    >
    > _______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian
    > _______________________________________________
    > Mondrian mailing list
    > Mondrian (AT) pentaho (DOT) org
    > http://lists.pentaho.org/mailman/listinfo/mondrian


    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

  8. #8
    Julian Hyde Guest

    Default Re: [Mondrian] [Olap4j-devel] connection issues with mondrianOlap4j

    > Ok after some days the i finally got some abandoned
    > connection messages:
    >
    > Could this be because I never close the ResultSet returned by
    > the drillthrough?


    Yes, that would be it. When mondrian drillthrough gives you a ResultSet, it
    holds the connection open until you close the ResultSet.

    So you absolutely have to close that result set.

    Julian

    _______________________________________________
    Mondrian mailing list
    Mondrian (AT) pentaho (DOT) org
    http://lists.pentaho.org/mailman/listinfo/mondrian

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Privacy Policy | Legal Notices | Safe Harbor Privacy Policy

Copyright © 2005 - 2019 Hitachi Vantara Corporation. All Rights Reserved.