Hi all,
I am currently evaluating JBoss Cache 1.3.0.SP1 (yes, I am new with it) for our
next project. I wrote a little stress test to get a feeling for the possible
throughput of the replication between two nodes on different machines. The
stress test uses a configurable number of threads updating the cache (whereby
the data records hardly interfere).
But since I moved the thread counter in the cache I have synchronization and
locking problems. The starting threads cause a high concurrency load. Without
transactions I recognized either lost updates or sometimes locking exceptions.
So I introduced trancactions (DummyUserTransaction) but this strengthened the
locking problem: only a few threads (1 to 4 of 20) are able to access the
thread counter, all others get a org.jboss.cache.lock.TimeoutException (even if
I set the LockAcquisitionTimeout to 120000 ms):
[java] org.jboss.cache.lock.TimeoutException: read lock for /global/config
could not be acquired by GlobalTransacti
on:<172.17.64.64:1413>:27 after 10000 ms. Locks: Read lock owners: {}
[java] Write lock owner: GlobalTransaction:<172.17.64.64:1413>:26
[java] , lock info: write owner=GlobalTransaction:<172.17.64.64:1413>:26
(activeReaders=0, activeWriter=Thread[DebitThread6,5,AccountThreads],
waitingReaders=3, waitingWriters=0, waitingUpgrader=0)
[java] at
org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:240)
[java] at org.jboss.cache.Node.acquireReadLock(Node.java:544)
[java] at org.jboss.cache.Node.acquire(Node.java:515)
[java] at
org.jboss.cache.interceptors.PessimisticLockInterceptor.lock(PessimisticLockInterceptor.java:202)
[java] at
org.jboss.cache.interceptors.PessimisticLockInterceptor.invoke(PessimisticLockInterceptor.java:138)
[java] at
org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
[java] at
org.jboss.cache.interceptors.UnlockInterceptor.invoke(UnlockInterceptor.java:32)
[java] at
org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
[java] at
org.jboss.cache.interceptors.ReplicationInterceptor.invoke(ReplicationInterceptor.java:24)
[java] at
org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
[java] at
org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:321)
[java] at
org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:136)
[java] at
org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:67)
[java] at
org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:133)
[java] at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:4804)
[java] at org.jboss.cache.TreeCache.get(TreeCache.java:3040)
[java] at org.jboss.cache.TreeCache.get(TreeCache.java:3021)
[java] at
org.jboss.cache.aop.CacheInterceptor.invoke(CacheInterceptor.java:111)
[java] at
org.jboss.aop.joinpoint.FieldReadInvocation.invokeNext(FieldReadInvocation.java:48)
[java] at
de.ic3s.evaluation.jbosscache.cacheable.Configuration.threadCnt_r_$aop(Configuration.java)
[java] at
de.ic3s.evaluation.jbosscache.cacheable.Configuration.setThreadCntUp(Configuration.java:48)
[java] at
de.ic3s.evaluation.jbosscache.Runner$AccountThread.incThreadCount(Runner.java:239)
[java] at
de.ic3s.evaluation.jbosscache.Runner$AccountThread.run(Runner.java:294)
[java] at java.lang.Thread.run(Thread.java:595)
| protected synchronized void incThreadCount() {
| short threadCnt = -1;
| UserTransaction tx = new
DummyUserTransaction(DummyTransactionManager.getInstance());
|
| try {
| Configuration configuration =
(Configuration)cache.getObject("/global/config");
|
| tx.begin();
|
| threadCnt = configuration.setThreadCntUp(); //
increments the thread counter
|
| tx.commit();
| }
| catch (Exception e) {
| printThreadMsg(e.getMessage(), e);
|
| try {
| tx.rollback();
| }
| catch(Throwable t) {}
| }
|
| printThreadMsg("ThreadCount++ = " + threadCnt);
| }
|
I am using the META-INF/replSync-service.xml from the examples to configure the
cache.
How can I get rid of these locks and maintain the cache to be synchronous? No
lock seems to be removed after the commit of the transaction.
Thanks
Mike
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3941274#3941274
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3941274
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user