[Mondrian] mondrian deadlock with limits/thread pools

Wright, Jeff jeff.s.wright at truvenhealth.com
Fri Jul 8 11:22:12 EDT 2016


I'm looking at a thread dump from a mondrian environment that was hung. My assessment of what happened is

*         An application thread was trying to get an OlapConnection. It acquires the RolapSchemaPool lock to load the schema.

*         The application thread is waiting on a "slot" to run a sql query needed to run a members query to load the schema (semaphore that implements mondrian.query.limit=40 slots).

*         All of the threads that currently have one of the 40 slots are waiting on SegmentCache$Actor so they can add segments to the cache.

*         SegmentCache$Actor is blocked on getting the RolapSchemaPool so that it can handle a SegmentCacheCreatedEvent from another node in the cluster.

Two questions:

*         Does it seem bad to anybody else but me, that the default for mondrian.rolap.maxSqlThreads is 100, but the default for mondrian.query.limit is 40? My thread dump from a hung node shows 50 SegmentCacheManager$sqlExecutor  threads, all competing for the 40 slots defined by mondrian.query.limit.

*         Does it seem reasonable to try to avoid the deadlock by changing these 2 properties? I'm thinking about bumping up mondrian.query.limit, and setting mondrian.rolap.maxSqlThreads to something like mondrian.query.limit - 10.

--jeff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20160708/bfe57fea/attachment.html 


More information about the Mondrian mailing list