We see a reproducible catastrophic issue with Mondrian's cache behavior. When an MDX statement is cancelled during a segment fetch, those segments are not properly marked as failed. Any future attempt to run a query that overlaps those segments will wait forever for that segment to complete.
We believe this happens because the execution gets the exception and calls end(), which calls statements.clear() before the RolapResultShepherd has made a pass through to clean up the cancelled executions.
Research Spike - need to be able to reproduce.