Hum... You'll pardon me for thinking that that listener/latch solution feels a 
bit like black magic eh? :-)

But if it works I won't beat it.

However, it doesn't seem to work for me. Without transactions we're still 
failing 15-20% of all runs (I increased repetitions to 5 or 10 to check this) 
with sequence errors. But perhaps that is to be expected without a transaction?

The transaction test produces aprox. 2.6M of logs. The test does go through, 
but thats only because the error count is not increased on exceptions, so 
changing the workers catch clause to... 
} catch(Throwable e) {
  |     log.error("Unexpected error", e);
  |     errorCount.incrementAndGet();
  |    /*
  |     * Roll back transaction, if it exists
  |     */
  |     checkRollbackTransaction(tx);
  | }
... (ie. increasing the error count on unexpected throwables). We fail horribly 
again. 

Excerpts from the exceptions follows further down.

It does work by manually throttling the access (forcing a 50ms sleep for all 
workers in the main iterations seems to do it), however that does not really 
feel like an option for us. 

So, does the test go through without errors for you? And if not, how can we 
make it work? 

Some exception encountered:

2008-05-22 12:21:10,051 - ERROR - Caught TimeoutException acquiring locks on 
region /
  | org.jboss.cache.lock.TimeoutException: failure acquiring lock: fqn=/36/36, 
caller=Thread[AsyncViewChangeHandlerThread,192.168.1.109:7800,5,main], 
lock=write owner=GlobalTransaction:<192.168.1.109:7800>:140223 
(activeReaders=0, activeWriter=Thread[Thread-308,5,main], waitingReaders=0, 
waitingWriters=0, waitingUpgrader=0)
  |     at org.jboss.cache.lock.IdentityLock.acquire(IdentityLock.java:530)
  |     at org.jboss.cache.lock.IdentityLock.acquireAll(IdentityLock.java:551)
  |     at org.jboss.cache.lock.IdentityLock.acquireAll(IdentityLock.java:559)
  |     at org.jboss.cache.lock.IdentityLock.acquireAll(IdentityLock.java:559)
  |     at 
org.jboss.cache.statetransfer.StateTransferManager.acquireLocksForStateTransfer(StateTransferManager.java:244)
  |     at 
org.jboss.cache.statetransfer.StateTransferManager.getState(StateTransferManager.java:93)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager.generateState(BuddyManager.java:938)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager.acquireState(BuddyManager.java:870)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager.addBuddies(BuddyManager.java:792)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager.reassignBuddies(BuddyManager.java:416)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager.access$8(BuddyManager.java:363)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager$AsyncViewChangeHandlerThread.handleEnqueuedViewChange(BuddyManager.java:1137)
  |     at 
org.jboss.cache.buddyreplication.BuddyManager$AsyncViewChangeHandlerThread.run(BuddyManager.java:1081)
  |     at java.lang.Thread.run(Thread.java:595)
  | Caused by: org.jboss.cache.lock.TimeoutException: read lock for /36/36 
could not be acquired by 
Thread[AsyncViewChangeHandlerThread,192.168.1.109:7800,5,main] after 400 ms. 
Locks: Read lock owners: []
  | Write lock owner: GlobalTransaction:<192.168.1.109:7800>:140223
  | , lock info: write owner=GlobalTransaction:<192.168.1.109:7800>:140223 
(activeReaders=0, activeWriter=Thread[Thread-308,5,main], waitingReaders=0, 
waitingWriters=0, waitingUpgrader=0)
  |     at 
org.jboss.cache.lock.IdentityLock.acquireReadLock0(IdentityLock.java:328)
  |     at 
org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:272)
  |     at org.jboss.cache.lock.IdentityLock.acquire(IdentityLock.java:495)
  |     ... 13 more

And...
008-05-22 12:21:19,681 - ERROR - prepare method invocation failed
  | org.jboss.cache.lock.TimeoutException: failure acquiring lock: 
fqn=/_BUDDY_BACKUP_/192.168.1.109_7800, 
caller=GlobalTransaction:<192.168.1.109:7800>:137593, lock=write 
owner=GlobalTransaction:<192.168.1.109:7800>:137592 (activeReaders=0, 
activeWriter=Thread[Incoming,192.168.1.109:7801,5,Thread Pools], 
waitingReaders=1, waitingWriters=0, waitingUpgrader=0)
  |     at org.jboss.cache.lock.IdentityLock.acquire(IdentityLock.java:530)
  |     at 
org.jboss.cache.lock.LockManager.acquireNodeLock(LockManager.java:235)
  |     at org.jboss.cache.lock.LockManager.lock(LockManager.java:143)
  |     at 
org.jboss.cache.lock.LockManager.acquireLocksWithTimeout(LockManager.java:71)
  |     at 
org.jboss.cache.interceptors.PessimisticLockInterceptor.handlePutCommand(PessimisticLockInterceptor.java:112)
  |     at 
org.jboss.cache.interceptors.PessimisticLockInterceptor.handlePutKeyValueCommand(PessimisticLockInterceptor.java:89)
  |     at 
org.jboss.cache.interceptors.base.PostProcessingCommandInterceptor.visitPutKeyValueCommand(PostProcessingCommandInterceptor.java:63)
  |     at 
org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:99)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  |     at 
org.jboss.cache.interceptors.ReplicationInterceptor.handleCrudMethod(ReplicationInterceptor.java:124)
  |     at 
org.jboss.cache.interceptors.ReplicationInterceptor.visitPutKeyValueCommand(ReplicationInterceptor.java:81)
  |     at 
org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:99)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
  |     at 
org.jboss.cache.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:29)
  |     at 
org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:99)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  |     at 
org.jboss.cache.interceptors.TxInterceptor$ModificationsReplayVisitor.handleDefault(TxInterceptor.java:640)
  |     at 
org.jboss.cache.interceptors.TxInterceptor$ModificationsReplayVisitor.handleDataVersionCommand(TxInterceptor.java:677)
  |     at 
org.jboss.cache.interceptors.TxInterceptor$ModificationsReplayVisitor.visitPutKeyValueCommand(TxInterceptor.java:654)
  |     at 
org.jboss.cache.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:99)
  |     at 
org.jboss.cache.commands.AbstractVisitor.visitCollection(AbstractVisitor.java:147)
  |     at 
org.jboss.cache.interceptors.TxInterceptor.handlePessimisticPrepare(TxInterceptor.java:546)
  |     at 
org.jboss.cache.interceptors.TxInterceptor.handleRemotePrepare(TxInterceptor.java:376)
  |     at 
org.jboss.cache.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:115)
  |     at 
org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:39)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
  |     at 
org.jboss.cache.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:99)
  |     at 
org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:39)
  |     at 
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
  |     at 
org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:144)
  |     at 
org.jboss.cache.interceptors.InvocationContextInterceptor.visitPrepareCommand(InvocationContextInterceptor.java:77)
  |     at 
org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:39)
  |     at 
org.jboss.cache.interceptors.InterceptorChain.invokeRemote(InterceptorChain.java:266)
  |     at 
org.jboss.cache.commands.remote.ReplicateCommand.processSingleCommand(ReplicateCommand.java:116)
  |     at 
org.jboss.cache.commands.remote.ReplicateCommand.perform(ReplicateCommand.java:92)
  |     at 
org.jboss.cache.marshall.CommandAwareRpcDispatcher.executeCommand(CommandAwareRpcDispatcher.java:173)
  |     at 
org.jboss.cache.marshall.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:133)
  |     at 
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
  |     at 
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
  |     at 
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
  |     at 
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:746)
  |     at org.jgroups.JChannel.up(JChannel.java:1154)
  |     at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:402)
  |     at org.jgroups.protocols.pbcast.FLUSH.up(FLUSH.java:370)
  |     at 
org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.up(STREAMING_STATE_TRANSFER.java:242)
  |     at org.jgroups.protocols.FRAG2.up(FRAG2.java:205)
  |     at org.jgroups.protocols.FC.up(FC.java:408)
  |     at org.jgroups.protocols.pbcast.GMS.up(GMS.java:780)
  |     at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:234)
  |     at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:729)
  |     at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167)
  |     at org.jgroups.protocols.FD.up(FD.java:285)
  |     at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:300)
  |     at org.jgroups.protocols.MERGE2.up(MERGE2.java:145)
  |     at org.jgroups.protocols.Discovery.up(Discovery.java:245)
  |     at org.jgroups.protocols.MPING.up(MPING.java:218)
  |     at org.jgroups.protocols.TP.passMessageUp(TP.java:1126)
  |     at org.jgroups.protocols.TP.access$100(TP.java:48)
  |     at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1637)
  |     at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1611)
  |     at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  |     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  |     at java.lang.Thread.run(Thread.java:595)
  | Caused by: org.jboss.cache.lock.TimeoutException: read lock for 
/_BUDDY_BACKUP_/192.168.1.109_7800 could not be acquired by 
GlobalTransaction:<192.168.1.109:7800>:137593 after 10000 ms. Locks: Read lock 
owners: []
  | Write lock owner: GlobalTransaction:<192.168.1.109:7800>:137592
  | , lock info: write owner=GlobalTransaction:<192.168.1.109:7800>:137592 
(activeReaders=0, activeWriter=Thread[Incoming,192.168.1.109:7801,5,Thread 
Pools], waitingReaders=1, waitingWriters=0, waitingUpgrader=0)
  |     at 
org.jboss.cache.lock.IdentityLock.acquireReadLock0(IdentityLock.java:328)
  |     at 
org.jboss.cache.lock.IdentityLock.acquireReadLock(IdentityLock.java:272)
  |     at org.jboss.cache.lock.IdentityLock.acquire(IdentityLock.java:495)
  |     ... 64 more

Etc...

Cheers /Lars

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4152618#4152618

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4152618
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to