[Mondrian] mondrian clear cache from other servlet

Martijn van den Broek martijn at basesoft.com
Thu Jul 11 03:39:17 EDT 2013


I sure dont hope we're dealing with giant-zombie-ghosts here. I almost
lost a leg last time I encountered those.

Our setup is as following: A typical tomcat setup where the mondrian.jar
(git master) lives in the WEB-INF/lib together with its dependencies. In
web.xml the xmla servlet is defined using the class from the
mondrian.jar package: mondrian.xmla.impl.DynamicDatasourceXmlaServlet .
So no subclassing there. I have also commented callbacks.
I havent yet looked into olap4j-xmlaservet. Is this preferred or
required for the JdbcConnectionUuid? Will that still work with
datasources.xml and reloading and such?

And then there is the XmlRpcServlet with the clearCache() functions. It
gets the mondrian connection like how I described in my first post:
mondrian.olap.Connection conn =
mondrian.olap.DriverManager.getConnection(datasource_info, null);

I sense some deprecation here. Should I be using the olap4j api to get
the connection? And then unwrap it to a mondrian.olap.Connection to
access the caching methods?




On 10/07/13 17:17, Luc Boudreau wrote:
> If the cache is empty but you get MDX results back, then yes,
> something is wrong. Could be ghosts, or worse, giant-zombie-ghosts;
> Half giant, half zombie, half ghost.
>
> Can you give more details on how things are setup? I'm not certain I
> understand exactly how you've setup things. How are you creating the
> Mondrian instance? Are you using the olap4j-xmlaservet project? Have
> you subclasses the servlet with your own code?
>
>
> On Wed, Jul 10, 2013 at 11:10 AM, Martijn van den Broek
> <martijn at basesoft.com <mailto:martijn at basesoft.com>> wrote:
>
>     Thanks for your quick reply. I forgot to mention I also have tried
>     the JdbcConnectionUuid. Ive tried again:
>
>     If I understand correctly, for XMLA no changes are needed except a
>     modification in datasources.xml which now looks like:
>
>            
>     <DataSourceInfo>Provider=mondrian;JdbcDrivers=com.mysql.jdbc.Driver;Jdbc=jdbc:mysql://127.0.0.1:3306/iqportal?user=xxx&amp;password=xxx;Catalog=
>     <http://127.0.0.1:3306/iqportal?user=xxx&password=xxx;Catalog=>file:///home/martijn/workspace_ee/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/iqube/WEB-INF/queries/basesoft.settings.martijn.IQuest.xml;UseContentChecksum=true;JdbcConnectionUuid=basesoft.settings.martijn.IQuest</DataSourceInfo>
>
>     The datasource_info that the XMLRPC servlet uses is now:
>
>     Provider=mondrian;JdbcDrivers=com.mysql.jdbc.Driver;Jdbc=jdbc:mysql://127.0.0.1:3306/iqportal?user=root&password=f00b4r;Catalog=
>     <http://127.0.0.1:3306/iqportal?user=root&password=f00b4r;Catalog=>file:///home/martijn/workspace_ee/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/iqube/WEB-INF/queries/basesoft.settings.martijn.IQuest.xml;UseContentChecksum=true;JdbcConnectionUuid=basesoft.settings.martijn.IQuest
>
>     However XMLRPC servlet cache still seems to be empty. Also
>     re-executing the MDX query does no SQL queries against the
>     database. Could anything else be wrong here?
>
>
>
>
>
>     On 10/07/13 15:37, Luc Boudreau wrote:
>>     You might not be hitting the same schema in cache. Using the
>>     datasource + checksum is tricky. If a single character changes in
>>     the schema, the checksum changes and you can't get a cache hit
>>     anymore, thus fragmenting your cache by creating a bunch of
>>     different schemas.
>>
>>     One thing you might look into, the JdbcConnectionUuid connection
>>     property. If defined, it forces Mondrian to use a given schema
>>     from the pool. Be wary though, make sure that you don't assign
>>     the same UUID to two different schemas, or you'll get weird
>>     things happening.
>>
>>     Luc
>>
>>
>>     On Wed, Jul 10, 2013 at 5:08 AM, Martijn van den Broek
>>     <martijn at basesoft.com <mailto:martijn at basesoft.com>> wrote:
>>
>>         Hello fellow mondrians,
>>
>>         We are running Mondrian using XMLA (compiled current git
>>         master) in a
>>         Tomcat 6 instance defined as following in web.xml:
>>
>>           <servlet>
>>             <servlet-name>MondrianXmlaServlet</servlet-name>
>>
>>         <servlet-class>mondrian.xmla.impl.DynamicDatasourceXmlaServlet</servlet-class>
>>              ...
>>           </servlet>
>>
>>         Next to that in the same web.xml, we have our own XMLRPC
>>         servlet for
>>         controlling various mondrian tasks like writing schema files and
>>         controlling cache:
>>
>>           <servlet>
>>             <servlet-name>IQubeXmlRpcServlet</servlet-name>
>>            
>>         <servlet-class>com.basesoft.iqube.xml.IQubeXmlRpcServlet</servlet-class>
>>              ...
>>          </servlet>
>>
>>         In that second xmlrpc servlet a clearCache method is defined
>>         which
>>         accepts a mondrian connectionstring similar as the code below:
>>
>>                 String datasource_info =
>>         "Provider=mondrian;JdbcDrivers=com.mysql.jdbc.Driver;Jdbc=jdbc:mysql://127.0.0.1:3306/iqportal?user=xxx&password=xxx;Catalog=file:///home/martijn/workspace_ee/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/iqube/WEB-INF/queries/basesoft.settings.martijn.IQuest.xml;UseContentChecksum=true
>>         <http://127.0.0.1:3306/iqportal?user=xxx&password=xxx;Catalog=file:///home/martijn/workspace_ee/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/iqube/WEB-INF/queries/basesoft.settings.martijn.IQuest.xml;UseContentChecksum=true>;";
>>
>>                 Connection conn =
>>         DriverManager.getConnection(datasource_info,
>>         null);
>>                 PrintWriter pw = new PrintWriter(System.out, true);
>>                 CacheControl cacheControl = conn.getCacheControl(pw);
>>
>>                 for (Cube cube : conn.getSchema().getCubes()) {
>>
>>                     CacheControl.CellRegion region =
>>         cacheControl.createMeasuresRegion(cube);
>>
>>                     System.out.println("!! clearMemberCache: cache
>>         state before:");
>>                     cacheControl.printCacheState(pw, region);
>>
>>                     cacheControl.flush(region);
>>
>>                     System.out.println("!! clearMemberCache: cache
>>         state after:");
>>                     cacheControl.printCacheState(pw, region);
>>
>>                     System.out.println("Cleared cache for cube '" +
>>         cube.getName() + "'");
>>                 }
>>
>>         Now if an MDX query is executed against the XMLA server and
>>         then the
>>         clearCache() method on the XMLRPC servlet is called, the
>>         cache state is
>>         printed as empty. It is not possible to clear the mondrian
>>         cache this
>>         way anymore. This code used to work in mondrian 3.5 but it
>>         seems the API
>>         has changed. My guess is that I am requesting the mondrian
>>         connection
>>         wrong due to the recent olap4j changes.
>>
>>         Any hints on how to get a proper connection? Any help is
>>         appreciated.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>         --
>>         Kind regards,
>>
>>         Martijn van den Broek
>>         BaseSoft Solutions B.V.
>>
>>         Herengracht 564
>>         1017 CH Amsterdam
>>         The Netherlands
>>
>>         http://www.basesoftsolutions.com/
>>         +31(0)206847087
>>
>>         Confidentiality notice
>>         **********************************************************************
>>         This email and any files transmitted with it are confidential and
>>         intended solely for the use of the individual or entity to
>>         whom they
>>         are addressed. If you have received this email in error
>>         please notify
>>         the system manager.
>>         **********************************************************************
>>
>>
>>
>>         _______________________________________________
>>         Mondrian mailing list
>>         Mondrian at pentaho.org <mailto:Mondrian at pentaho.org>
>>         http://lists.pentaho.org/mailman/listinfo/mondrian
>>
>>
>>
>>
>>     _______________________________________________
>>     Mondrian mailing list
>>     Mondrian at pentaho.org <mailto:Mondrian at pentaho.org>
>>     http://lists.pentaho.org/mailman/listinfo/mondrian
>
>
>     -- 
>     Kind regards,
>
>     Martijn van den Broek
>     BaseSoft Solutions B.V.
>
>     Herengracht 564
>     1017 CH Amsterdam
>     The Netherlands
>
>     http://www.basesoftsolutions.com/
>     +31(0)206847087
>
>     Confidentiality notice
>     **********************************************************************
>     This email and any files transmitted with it are confidential and
>     intended solely for the use of the individual or entity to whom they
>     are addressed. If you have received this email in error please notify
>     the system manager.
>     **********************************************************************
>
>
>
>
>     _______________________________________________
>     Mondrian mailing list
>     Mondrian at pentaho.org <mailto: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


-- 
Kind regards,

Martijn van den Broek
BaseSoft Solutions B.V.

Herengracht 564
1017 CH Amsterdam
The Netherlands

http://www.basesoftsolutions.com/
+31(0)206847087

Confidentiality notice
**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.
**********************************************************************



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20130711/dcb2ceb1/attachment-0001.html 


More information about the Mondrian mailing list