By refactoring the above code to retry a configurable number of times and by randomizing the time to wait between retries, I was able to get the behavior I expected. Essentially, this code takes a concurrent event, and makes it not concurrent (avoiding the distributed deadlock situation altogether).
The refactored code: | public void test() | throws Exception | { | _cache.startService(); | | try | { | | // Try to insert into the cache a maximum of 2 times. | int retryCount = 2; | | for (int i = 0; i < retryCount; i++) | { | try | { | putInCache("key", _value); | } | catch (AlreadyBound ab) | { | throw ab; | } | catch (Exception e) | { | System.out.println(); | System.out.println("===== Try #" + i + " ============================="); | e.printStackTrace(System.out); | System.out.println("=========================================="); | System.out.println(); | | // Wait at least 100 milliseconds. | Thread.sleep(_random.nextInt(4900) + 100); | | continue; | } | | break; | } | } | catch (Throwable t) | { | t.printStackTrace(System.out); | System.out.println(); | } | finally | { | System.out.println(); | System.out.println("Done."); | System.out.println(); | } | } | | private void putInCache(String key, String value) | throws Exception | { | UserTransaction tx = | new DummyUserTransaction(DummyTransactionManager.getInstance()); | | tx.begin(); | | Object previous = _cache.put("aom", "key", _value); | | if (previous != null) | { | tx.rollback(); | | throw new AlreadyBound(); | } | else | { | tx.commit(); | } | } | Anyone else have other ideas on how to handle distributed deadlock situations? View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3855027#3855027 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3855027 ------------------------------------------------------- This SF.Net email is sponsored by: Sybase ASE Linux Express Edition - download now for FREE LinuxWorld Reader's Choice Award Winner for best database on Linux. http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development