[Mondrian] Multithreading, Parallel Batch / Query Execution

Tushar Apshankar tapshank at thoughtworks.com
Wed Apr 25 08:57:32 EDT 2007


Hi,

To improve performance, we started looking at ReentrantReadWriteLock and 
ConcurrentHashMap (from java.util.concurrent) package.
We are also looking at ThreadPoolExecutor and related classes to implment 
parallel query / batch execution (most of these classes are also available 
in java.util.concurrent as well as backport jar).
Since compatibility with Java 1.4 is essential, we started looking at the 
build script retroweave target that uses Retroweaver 1.2.4.

Retroweaver without our changes works fine. We ran into problems while 
using the current retroweaver version and build target after our changes. 

We have a simple class LockTest to reproduce the problem:
=============================================================================================
package mondrian;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.Lock;

public class LockTest {
    ConcurrentHashMap<String, String> cache = new 
ConcurrentHashMap<String, String>();
    ReentrantReadWriteLock lock;
    Lock r ; 
    Lock w ;
    public LockTest()
    {
        cache = new ConcurrentHashMap();
        lock = new ReentrantReadWriteLock();
        System.out.println("Before lock = " + lock);
        w = lock.writeLock();
        r = lock.readLock();
        System.out.println("After lock = " + lock);
    }

    public static void main(String[] args) {
        LockTest lt = new LockTest();
        System.out.println("i am inside main method");
    }
}
=============================================================================================
When we retroweave it with retroweaver 1.2.4 (using ANT as well as 
retroweaver UI) and run the weaved class using Java 1.4.2, we get 
java.lang.NoSuchMethodError. Stack is:

java.lang.NoSuchMethodError: 
edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantReadWriteLock.writeLock()
Ledu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
[Loaded java.lang.StackTraceElement from C:\j2sdk1.4.2_14\jre\lib\rt.jar]
        at mondrian.LockTest.<init>(LockTest.java:26)
        at mondrian.LockTest.main(LockTest.java:34):

We have backport jar in our class path (please note that we are NOT 
getting ClassNotFoundExcecption).
Did someone face this issue earlier? Please let us know if we are missing 
something here.

We also tried out retroweaver 2.0 without success.

As an alternative, we tried Retrotranslator(
http://retrotranslator.sourceforge.net) and everything worked in first 
attempt. We propose to create a new target for Retrotranslator and add the 
related libraries. Please let us know your thoughts on this

Thanks and regards,
Tushar, Ajit

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20070425/6046b78f/attachment.html 


More information about the Mondrian mailing list