[Mondrian] Cube cache flush

Matt Campbell mcampbell at pentaho.com
Tue Jun 2 10:31:59 EDT 2015


Sorry for the delay in responding.

This looks like a bug to me.  The CacheControl.flush is flushing members from the MemberCache associated with the hierarchy, but not the cache associated with native sets.  The “Filter()” in your MDX is likely causing native filter to be used, so encountering the same filter again would pull from an un-flushed cache.

I’m not aware of a workaround (apart from not using native eval, which comes with a severe performance penalty).

I’ve created http://jira.pentaho.com/browse/MONDRIAN-2366 for this.


From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org] On Behalf Of Hilario Fernandes
Sent: Monday, June 01, 2015 2:25 PM
To: Mondrian mailing list
Subject: Re: [Mondrian] Cube cache flush

I still haven't found a way to get over this problem. For some reason i am unable to clear the member cache. SegmentCache is cleared fine, but members remain somewhere hidden to me.

Is there anyone that can shed some light on this?

On Tue, Dec 16, 2014 at 6:47 PM, Hilario Fernandes <hilario.fernandes at cortex-intelligence.com<mailto:hilario.fernandes at cortex-intelligence.com>> wrote:
Hi,

I'm trying to flush the cache of a cube loaded into Mondrian and not getting the results i'd expect. I've read both the source code, this piece of documentation<http://mondrian.pentaho.com/documentation/cache_control.php> and a few references scattered around the internet, but found no solution for the behavior i'm experiencing.

So, my goal is to clear any member and aggregation cache for the whole cube, i'm trying with this:

CacheControl cacheControl = internalConnection.getCacheControl(null)
cube.clearCachedAggregations(true)
def members = cube.dimensions.grep { Dimension it -> !it.isMeasures() }*.hierarchies*.allMember.flatten()
members.each { RolapCubeMember member ->
  cacheControl.flush(cacheControl.createMemberSet(member, true))
}

And this seems to clear the members, and regions associated with them, but there are some cases where it's apparently not working. The following query is one of those:

SELECT
Filter({[Fuel].[Fuel].Members}, Not IsEmpty([Measures].[Price_SUM])) ON COLUMNS
FROM [cube]

When I add data to the cube and run the above code, the Filter remains unchanged, but if I refer to the Fuel members without filter they are up to date.

I've tried different things without success, such as

def measuresRegion = cacheControl.createMeasuresRegion(cube)
cacheControl.flush(measuresRegion)

Anyone can shed some light over this matter? Should i be cleaning something else?


--
Hilario Fernandes



--
Hilario Fernandes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20150602/39770da4/attachment.html 


More information about the Mondrian mailing list