<div dir="ltr">As I mentioned on my answer on another thread with Matt and Jeff, using the lazy-load pattern is fine. We use it in many other places in the XMLA driver. (see DefferedNamedList)<br><div><br></div><div>As for the change to MondrianOlap4jConnection, it sounds like a reasonable request. That&#39;s how it should have been in the first place. If you can show some code, we&#39;ll review it and get things moving.</div><div><br></div><div>Luc</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 7, 2014 at 10:42 AM, Ganong, Kenneth <span dir="ltr">&lt;<a href="mailto:ken.ganong@truvenhealth.com" target="_blank">ken.ganong@truvenhealth.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">I attempted to make a code change to solve this issue by having MondrianOlap4jConnection lazily-load its schema map. I was then able to create a Connection
 without loading all of the schemas. Unfortunately, an XML/A request for Mdschema Cubes will call getOlapCatalogs on the OlapConnection, causing the schema loads for every catalog even though the XML/A request specified a catalog name.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">I am now attempting to have the Catalog’s schema’s be lazily-loaded as well so that the schemas are not loaded for catalogs until the schemas are requested
 (i.e. not during the getOlapCatalogs method nor constructor of MondrainOlap4jConnection). This should allow discover requests that specific a catalog name to not load the schemas for other catalogs.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">I’m also considering an option in the XML/A layer to short-cut selecting the catalog for the current connection. Instead of iterating over connection.getOlapCatalogs,
 it would call simply connection.getOlapCatalog to get the active catalog for the connection. This could be implemented as a property so that the XML/A layer avoids calling the method that requires loading of all schemas. This would require a change to MondrianOlapConnection
 so that the getOlapCatalog method no longer requires loading all catalogs and schemas.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">I would be grateful for any feedback on the options I am considering to solve this open issue.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">        Ken<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Ganong, Kenneth
<br>
<b>Sent:</b> Wednesday, October 29, 2014 9:01 AM<span class=""><br>
<b>To:</b> Mondrian developer mailing list<br>
</span><b>Subject:</b> RE: [Mondrian] MondrianOlap4jConnection requires creation of all RolapConnections<u></u><u></u></span></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Yes! Your jira issue does look like the same underlying cause as the issue I’ve run into.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">        Ken<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
<a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mondrian-bounces@pentaho.org</a> [<a href="mailto:mondrian-bounces@pentaho.org" target="_blank">mailto:mondrian-bounces@pentaho.org</a>]
<b>On Behalf Of </b>Roland Bouman<br>
<b>Sent:</b> Tuesday, October 28, 2014 6:06 PM<br>
<b>To:</b> Mondrian developer mailing list<br>
<b>Subject:</b> Re: [Mondrian] MondrianOlap4jConnection requires creation of all RolapConnections<u></u><u></u></span></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hi Ken,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">is it possible that this is related to <a href="http://jira.pentaho.com/browse/MONDRIAN-1056" target="_blank">http://jira.pentaho.com/browse/MONDRIAN-1056</a>?<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Tue, Oct 28, 2014 at 10:59 PM, Ganong, Kenneth &lt;<a href="mailto:ken.ganong@truvenhealth.com" target="_blank">ken.ganong@truvenhealth.com</a>&gt; wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">Hello Mondrian Developers,<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">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:<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>A failed discover query when one of the unrelated connections ran into an exception during its construction.<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>Severe slow down when many catalogs where defined in Datasource.xml.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">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?<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">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.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal" style="text-indent:.5in">
for (String catalogName : catalogFinder.getCatalogNames(connection))<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">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).<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">                final Map&lt;String, RolapSchema&gt; rolapSchemas = catalogFinder.getRolapSchemas(connection, catalogName);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Our Datasource.xml has a single datasource with many catalogs in it, like this:<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
 <u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
&lt;DataSources&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
    &lt;DataSource&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
        &lt;Catalogs&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;Catalog name=&quot;a42od970_a42od970_build&quot;&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;/Catalog&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;Catalog name=&quot;a42od970_a42od970_secure1_build&quot;&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;/Catalog&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;Catalog name=&quot;a42od378_a42od378_build&quot;&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
            &lt;/Catalog&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
        &lt;/Catalogs&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
    &lt;/DataSource&gt;<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:.5in">
&lt;/DataSources&gt;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">The code path for creating all of these RolapConnections is:<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>MondrianOlap4jConnection.&lt;init&gt;<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>MondrianServerImpl.getRolapSchemas<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>FileRepository.getRolapSchemas<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>FileRepository$CatalogInfo.access<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>FileRepository$CatalogInfo.getRolapSchema<u></u><u></u></p>
<p><span style="font-family:Symbol">·</span><span style="font-size:7.0pt">        
</span>DriverManager.getConnection<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">I don’t understand why creating a single connection would require the creation of every one of these connections.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">        Ken<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
Mondrian mailing list<br>
<a href="mailto:Mondrian@pentaho.org" target="_blank">Mondrian@pentaho.org</a><br>
<a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a><u></u><u></u></p>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">-- <br>
Roland Bouman<br>
blog: <a href="http://rpbouman.blogspot.com/" target="_blank">http://rpbouman.blogspot.com/</a><br>
twitter: @rolandbouman<br>
linkedin: <a href="http://www.linkedin.com/profile/view?id=5142800&amp;trk=tab_pro" target="_blank">
http://www.linkedin.com/profile/view?id=5142800&amp;trk=tab_pro</a><br>
<br>
Author of &quot;Pentaho Solutions&quot; (Wiley, ISBN: 978-0-470-48432-6 <a href="http://tinyurl.com/lvxa88" target="_blank">
http://tinyurl.com/lvxa88</a>) and &quot;Pentaho Kettle Solutions&quot; (Wiley, ISBN: 978-0-470-63517-9
<a href="http://tinyurl.com/33r7a8m" target="_blank">http://tinyurl.com/33r7a8m</a>)
<u></u><u></u></p>
</div>
</div>
</div>
</div></div></div>
</div>

<br>_______________________________________________<br>
Mondrian mailing list<br>
<a href="mailto:Mondrian@pentaho.org">Mondrian@pentaho.org</a><br>
<a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a><br>
<br></blockquote></div><br></div>