[Mondrian] MondrianOlap4jConnection requires creation of all RolapConnections

Ganong, Kenneth ken.ganong at truvenhealth.com
Wed Oct 29 09:01:28 EDT 2014


Yes! Your jira issue does look like the same underlying cause as the issue I’ve run into.

        Ken

From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org] On Behalf Of Roland Bouman
Sent: Tuesday, October 28, 2014 6:06 PM
To: Mondrian developer mailing list
Subject: Re: [Mondrian] MondrianOlap4jConnection requires creation of all RolapConnections

Hi Ken,

is it possible that this is related to http://jira.pentaho.com/browse/MONDRIAN-1056?

On Tue, Oct 28, 2014 at 10:59 PM, Ganong, Kenneth <ken.ganong at truvenhealth.com<mailto:ken.ganong at truvenhealth.com>> wrote:
Hello Mondrian Developers,

We’ve encountered an issue in which a Discover query is creating RolapConnection’s for every schema defined in our Datasource.xml. This issue has been encountered in two forms:

•         A failed discover query when one of the unrelated connections ran into an exception during its construction.

•         Severe slow down when many catalogs where defined in Datasource.xml.

Here is what I’ve gathered from the cause of this issue. Is there something that we are doing incorrectly, is this a corner case, or is this a true issue with Mondrian 3.6?

In MondrianOlap4jConnection’s constructor, this for loop goes through every catalog in our Datasource.xml, including ones that are not related to this particular connection.

for (String catalogName : catalogFinder.getCatalogNames(connection))

Inside this for loop is the following line of code which ends up creating a RolapConnection to every schema referenced in Datasource.xml (again, not just the ones related to the connection).

                final Map<String, RolapSchema> rolapSchemas = catalogFinder.getRolapSchemas(connection, catalogName);

Our Datasource.xml has a single datasource with many catalogs in it, like this:

<DataSources>
    <DataSource>
        <Catalogs>
            <Catalog name="a42od970_a42od970_build">
            </Catalog>
            <Catalog name="a42od970_a42od970_secure1_build">
            </Catalog>
            <Catalog name="a42od378_a42od378_build">
            </Catalog>
        </Catalogs>
    </DataSource>
</DataSources>

The code path for creating all of these RolapConnections is:

•         MondrianOlap4jConnection.<init>

•         MondrianServerImpl.getRolapSchemas

•         FileRepository.getRolapSchemas

•         FileRepository$CatalogInfo.access

•         FileRepository$CatalogInfo.getRolapSchema

•         DriverManager.getConnection


I don’t understand why creating a single connection would require the creation of every one of these connections.

        Ken

_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org<mailto:Mondrian at pentaho.org>
http://lists.pentaho.org/mailman/listinfo/mondrian



--
Roland Bouman
blog: http://rpbouman.blogspot.com/
twitter: @rolandbouman
linkedin: http://www.linkedin.com/profile/view?id=5142800&trk=tab_pro

Author of "Pentaho Solutions" (Wiley, ISBN: 978-0-470-48432-6 http://tinyurl.com/lvxa88) and "Pentaho Kettle Solutions" (Wiley, ISBN: 978-0-470-63517-9 http://tinyurl.com/33r7a8m)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20141029/73c8f2bd/attachment-0001.html 


More information about the Mondrian mailing list