Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 99023 invoked from network); 24 Mar 2011 05:01:20 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 24 Mar 2011 05:01:20 -0000 Received: (qmail 40867 invoked by uid 500); 24 Mar 2011 05:01:19 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 40828 invoked by uid 500); 24 Mar 2011 05:01:19 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 40820 invoked by uid 99); 24 Mar 2011 05:01:18 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Mar 2011 05:01:18 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [209.85.214.174] (HELO mail-iw0-f174.google.com) (209.85.214.174) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Mar 2011 05:01:13 +0000 Received: by iwn34 with SMTP id 34so12153890iwn.33 for ; Wed, 23 Mar 2011 22:00:52 -0700 (PDT) Received: by 10.43.50.74 with SMTP id vd10mr12840516icb.16.1300942851921; Wed, 23 Mar 2011 22:00:51 -0700 (PDT) Received: from [10.0.1.90] (203-114-161-15.wir.sta.inspire.net.nz [203.114.161.15]) by mx.google.com with ESMTPS id u9sm5555340ibe.53.2011.03.23.22.00.49 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 23 Mar 2011 22:00:51 -0700 (PDT) Sender: Todd Nine Subject: Concurrent modification exception on recursive load From: Todd Nine Reply-To: todd@spidertracks.com To: dev Content-Type: multipart/alternative; boundary="=-VNYhxehUjPmhJfTFFeDy" Organization: Spidertracks Date: Thu, 24 Mar 2011 18:00:57 +1300 Message-ID: <1300942857.5530.28.camel@greenlantern> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 --=-VNYhxehUjPmhJfTFFeDy Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Hey guys, I have all my plugin tests passing except for one. I'm not sure if it's a bug in OpenJPA or in my code. When I'm recursively fetching entities, I will occasionally get this error. org.apache.openjpa.util.GeneralException: null at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1003) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:897) at com.datastax.hectorjpa.meta.ToOneColumn.readField(ToOneColumn.java:127) at com.datastax.hectorjpa.store.EntityFacade.loadColumns(EntityFacade.java:237) at com.datastax.hectorjpa.store.CassandraStore.getObject(CassandraStore.java:97) at com.datastax.hectorjpa.store.CassandraStoreManager.load(CassandraStoreManager.java:160) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:3061) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:3135) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1738) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1628) at org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:915) at org.apache.openjpa.kernel.ManagedCache.dirtyCheck(ManagedCache.java:302) at org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:4029) at org.apache.openjpa.kernel.BrokerImpl.addToTransaction(BrokerImpl.java:4101) at org.apache.openjpa.kernel.StateManagerImpl.setPCState(StateManagerImpl.java:274) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:381) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:333) at com.datastax.hectorjpa.store.CassandraStoreManager.initialize(CassandraStoreManager.java:143) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:897) at com.datastax.hectorjpa.meta.ToOneColumn.readField(ToOneColumn.java:127) at com.datastax.hectorjpa.store.EntityFacade.loadColumns(EntityFacade.java:237) at com.datastax.hectorjpa.store.CassandraStore.getObject(CassandraStore.java:97) at com.datastax.hectorjpa.store.CassandraStoreManager.load(CassandraStoreManager.java:160) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:3061) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:3135) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1738) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1628) at org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:915) at org.apache.openjpa.kernel.ManagedCache.dirtyCheck(ManagedCache.java:302) at org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:4029) at org.apache.openjpa.kernel.BrokerImpl.addToTransaction(BrokerImpl.java:4101) at org.apache.openjpa.kernel.StateManagerImpl.setPCState(StateManagerImpl.java:274) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:381) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:333) at com.datastax.hectorjpa.store.CassandraStoreManager.initialize(CassandraStoreManager.java:143) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:897) at com.datastax.hectorjpa.meta.ToOneColumn.readField(ToOneColumn.java:127) at com.datastax.hectorjpa.store.EntityFacade.loadColumns(EntityFacade.java:237) at com.datastax.hectorjpa.store.CassandraStore.getObject(CassandraStore.java:97) at com.datastax.hectorjpa.store.CassandraStoreManager.load(CassandraStoreManager.java:160) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:3061) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:3135) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1738) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1628) at org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:915) at org.apache.openjpa.kernel.ManagedCache.dirtyCheck(ManagedCache.java:302) at org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:4029) at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:4146) at org.apache.openjpa.kernel.StateManagerImpl.setPCState(StateManagerImpl.java:278) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1701) at org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1628) at org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:915) at org.apache.openjpa.kernel.ManagedCache.dirtyCheck(ManagedCache.java:302) at org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:4029) at org.apache.openjpa.kernel.BrokerImpl.addToTransaction(BrokerImpl.java:4101) at org.apache.openjpa.kernel.StateManagerImpl.setPCState(StateManagerImpl.java:274) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:381) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:333) at com.datastax.hectorjpa.store.CassandraStoreManager.initialize(CassandraStoreManager.java:143) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:897) at com.datastax.hectorjpa.meta.ToOneColumn.readField(ToOneColumn.java:127) at com.datastax.hectorjpa.store.EntityFacade.loadColumns(EntityFacade.java:237) at com.datastax.hectorjpa.store.CassandraStore.getObject(CassandraStore.java:97) at com.datastax.hectorjpa.store.CassandraStoreManager.initialize(CassandraStoreManager.java:145) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:897) at com.datastax.hectorjpa.meta.collection.OrderedCollectionField.readField(OrderedCollectionField.java:123) at com.datastax.hectorjpa.store.EntityFacade.loadColumns(EntityFacade.java:213) at com.datastax.hectorjpa.store.CassandraStore.getObject(CassandraStore.java:97) at com.datastax.hectorjpa.store.CassandraStoreManager.load(CassandraStoreManager.java:160) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:117) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:3061) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:3135) at org.apache.openjpa.kernel.StateManagerImpl.fetchObjectField(StateManagerImpl.java:2383) at org.apache.openjpa.kernel.StateManagerImpl.fetchField(StateManagerImpl.java:865) at org.apache.openjpa.kernel.StateManagerImpl.fetch(StateManagerImpl.java:827) at org.apache.openjpa.enhance.RedefinitionHelper $1.invoke(RedefinitionHelper.java:230) at $Proxy20.get(Unknown Source) at com.datastax.hectorjpa.store.ManyToOneIndexTest.basicFollowingDelete(ManyToOneIndexTest.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod $1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828) at org.apache.openjpa.kernel.ManagedCache.dirtyCheck(ManagedCache.java:301) at org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:4029) at org.apache.openjpa.kernel.BrokerImpl.addToTransaction(BrokerImpl.java:4101) at org.apache.openjpa.kernel.StateManagerImpl.setPCState(StateManagerImpl.java:274) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:381) at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:333) at com.datastax.hectorjpa.store.CassandraStoreManager.initialize(CassandraStoreManager.java:143) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) ... 123 more I don't get it when running in debug mode, so I think it's some sort of race condition. Any ideas what I'm doing wrong in my code? Also, with collection proxies created using OpenJPAStateManager.newProxyField(int id), I'll occasionally have fields that have been removed from the collection, but aren't returned via the change tracker's getRemoved(). Is this a know issue? Thanks, Todd -- todd SENIOR SOFTWARE ENGINEER todd nine| spidertracks ltd | 117a the square po box 5203 | palmerston north 4441 | new zealand P: +64 6 353 3395 E: todd@spidertracks.co.nz W: www.spidertracks.com --=-VNYhxehUjPmhJfTFFeDy--