Return-Path: X-Original-To: apmail-jackrabbit-dev-archive@www.apache.org Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9B8AE7B2B for ; Fri, 23 Dec 2011 21:26:55 +0000 (UTC) Received: (qmail 22440 invoked by uid 500); 23 Dec 2011 21:26:55 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 22394 invoked by uid 500); 23 Dec 2011 21:26:55 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 22387 invoked by uid 99); 23 Dec 2011 21:26:55 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Dec 2011 21:26:55 +0000 X-ASF-Spam-Status: No, hits=-2002.5 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Dec 2011 21:26:52 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id A08CE126E3A for ; Fri, 23 Dec 2011 21:26:30 +0000 (UTC) Date: Fri, 23 Dec 2011 21:26:30 +0000 (UTC) From: "Mat Lowery (Created) (JIRA)" To: dev@jackrabbit.apache.org Message-ID: <20830832.43268.1324675590659.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Created] (JCR-3194) ConcurrentModificationException in CacheManager. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org ConcurrentModificationException in CacheManager. ------------------------------------------------ Key: JCR-3194 URL: https://issues.apache.org/jira/browse/JCR-3194 Project: Jackrabbit Content Repository Issue Type: Bug Affects Versions: 2.3.4 Reporter: Mat Lowery Using the test code below, I was able to produce this stack: java.util.ConcurrentModificationException at java.util.WeakHashMap$HashIterator.nextEntry(WeakHashMap.java:762) at java.util.WeakHashMap$KeyIterator.next(WeakHashMap.java:795) at org.apache.jackrabbit.core.cache.CacheManager.logCacheStats(CacheManager.java:164) at org.apache.jackrabbit.core.cache.CacheManager.cacheAccessed(CacheManager.java:137) at org.apache.jackrabbit.core.cache.AbstractCache.recordCacheAccess(AbstractCache.java:122) at org.apache.jackrabbit.core.cache.ConcurrentCache.get(ConcurrentCache.java:122) at org.apache.jackrabbit.core.state.MLRUItemStateCache.retrieve(MLRUItemStateCache.java:71) at org.apache.jackrabbit.core.state.ItemStateReferenceCache.retrieve(ItemStateReferenceCache.java:139) at org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1716) at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:268) at org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:110) at org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:175) at org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:260) at org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:161) at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:382) at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328) at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622) at org.apache.jackrabbit.core.ItemManager.getRootNode(ItemManager.java:531) at org.apache.jackrabbit.core.SessionImpl.getRootNode(SessionImpl.java:760) at test.JackrabbitTest$1.run(JackrabbitTest.java:37) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) ------------------------- package test; import java.io.File; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.core.TransientRepository; public class JackrabbitTest { public static void main(final String[] args) throws Exception { File dir = File.createTempFile("jackrabbit-test", ""); dir.delete(); dir.mkdir(); System.out.println("created temporary directory: " + dir.getAbsolutePath()); dir.deleteOnExit(); final Repository jcrRepo = new TransientRepository(dir); final AtomicBoolean passed = new AtomicBoolean(true); final AtomicInteger counter = new AtomicInteger(0); ExecutorService executor = Executors.newFixedThreadPool(50); Runnable runnable = new Runnable() { @Override public void run() { try { Session session = jcrRepo.login( new SimpleCredentials("admin", "admin".toCharArray())); session.getRootNode().addNode("n" + counter.getAndIncrement()); //unique name session.save(); session.logout(); } catch (RepositoryException e) { e.printStackTrace(); passed.set(false); } } }; System.out.println("Running threads"); for (int i = 0; i< 500; i++) { executor.execute(runnable); } executor.shutdown(); //Disable new tasks from being submitted if (!executor.awaitTermination(120, TimeUnit.SECONDS)) { System.err.println("timeout"); System.exit(1); } if (!passed.get()) { System.err.println("one or more threads got an exception"); System.exit(1); } else { System.out.println("all threads ran with no exceptions"); System.exit(0); } } } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira