ConcurrentModificationException when clearing upstream version
Reported by Ben Hood | February 9th, 2011 @ 12:11 PM | in 0.9.3
Steps to reproduce:
- Run mvn clean verify in agent module
- Run mvn verify (without cleaning)
Stacktrace:
12:08:11.391 [qtp166552229-32] Configuration.scala:117 - Processing group declare/update request: g1
12:08:11.398 [qtp166552229-29] Configuration.scala:41 - Processing endpoint declare/update request: abCorrelatedAmqp-us
12:08:11.441 [qtp166552229-29] JsonAmqpMessagingRegistrar.scala:63 - Starting consumer for endpoint: Endpoint(abCorrelatedAmqp-us,amqp://localhost//queues/participant-us-correlated,application/json,amqp://localhost//queues/changes-correlated,application/json,true,{bizDate=net.lshift.diffa.kernel.config.RangeCategoryDescriptor@726c554})
12:08:11.447 [qtp166552229-35] Configuration.scala:41 - Processing endpoint declare/update request: abCorrelatedAmqp-ds
12:08:11.483 [qtp166552229-35] JsonAmqpMessagingRegistrar.scala:63 - Starting consumer for endpoint: Endpoint(abCorrelatedAmqp-ds,amqp://localhost//queues/participant-ds-correlated,application/json,amqp://localhost//queues/changes-correlated,application/json,true,{bizDate=net.lshift.diffa.kernel.config.RangeCategoryDescriptor@62d7601c})
12:08:11.492 [qtp166552229-33] Configuration.scala:87 - Processing pair declare/update request: abCorrelatedAmqp
12:08:11.510 [qtp166552229-33] Logging.scala:77 - Shutting down ExecutorBasedEventDrivenDispatcher[akka:event-driven:dispatcher:global]
12:08:11.511 [akka:event-driven:dispatcher:global-3] Logging.scala:77 - Exiting thread akka:event-driven:dispatcher:global-3
12:08:11.511 [qtp166552229-33] PairActorSupervisor.scala:62 - Stopped actor for key: abCorrelatedAmqp
12:08:11.562 [qtp166552229-33] Logging.scala:77 - Creating a se.scalablesolutions.akka.dispatch.Dispatchers$globalExecutorBasedEventDrivenDispatcher$ with config [core-pool:16,max-pool:128,timeout:60000,allowCoreTimeout:false,rejectPolicy:CallerRunsPolicy]
12:08:11.562 [qtp166552229-33] Logging.scala:77 - Starting up ExecutorBasedEventDrivenDispatcher[akka:event-driven:dispatcher:global]
with throughput [5]
12:08:11.562 [qtp166552229-33] PairActorSupervisor.scala:44 - Started actor for key: abCorrelatedAmqp
12:08:11.581 [qtp166552229-33] LocalEventMatcher.scala:71 - Disposing analyzer for pair: abCorrelatedAmqp
12:08:11.582 [akka:event-driven:dispatcher:global-4] Logging.scala:77 - Created thread akka:event-driven:dispatcher:global-4
12:08:11.600 [akka:event-driven:dispatcher:global-4] AmqpRpcClient.scala:58 - query_aggregate_digests: {"constraints":[{"attributes":{},"values":null,"category":"bizDate"}],"buckets":{"bizDate":"yearly"}}
12:08:11.610 [akka:event-driven:dispatcher:global-4] DigestBuilder.scala:47 - Adding to bucket: abc, Map(bizDate -> 2011-02-09T12:05:14.319Z), 2011-02-09T12:05:20.691Z, uvsn_abcdef
12:08:11.611 [akka:event-driven:dispatcher:global-4] AmqpRpcClient.scala:58 - query_entity_versions: [{"attributes":{"lower":"2011-01-01T00:00:00.000Z","upper":"2011-12-31T23:59:59.999Z"},"values":null,"category":"bizDate"}]
12:08:11.631 [akka:event-driven:dispatcher:global-4] Logging.scala:120 - Exception when invoking
actor [Actor[abCorrelatedAmqp:1298679354921]]
with message [DifferenceMessage(net.lshift.diffa.kernel.differencing.DefaultSessionManager@49b40272)]
java.util.ConcurrentModificationException: null
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372) [na:1.6.0_20]
at java.util.AbstractList$Itr.next(AbstractList.java:343) [na:1.6.0_20]
at scala.collection.JavaConversions$JIteratorWrapper.next(JavaConversions.scala:476) [scala-library-2.8.0.jar:na]
at scala.collection.Iterator$class.foreach(Iterator.scala:631) [scala-library-2.8.0.jar:na]
at scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:474) [scala-library-2.8.0.jar:na]
at scala.collection.IterableLike$class.foreach(IterableLike.scala:79) [scala-library-2.8.0.jar:na]
at scala.collection.JavaConversions$JListWrapper.foreach(JavaConversions.scala:521) [scala-library-2.8.0.jar:na]
at net.lshift.diffa.kernel.indexing.LuceneVersionCorrelationStore$$anonfun$clearUpstreamVersion$1.apply(LuceneVersionCorrelationStore.scala:103) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.indexing.LuceneVersionCorrelationStore$$anonfun$clearUpstreamVersion$1.apply(LuceneVersionCorrelationStore.scala:98) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.indexing.LuceneVersionCorrelationStore.doClearAttributes(LuceneVersionCorrelationStore.scala:241) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.indexing.LuceneVersionCorrelationStore.clearUpstreamVersion(LuceneVersionCorrelationStore.scala:98) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$UpstreamSyncStrategy.handleMismatch(BaseSynchingVersionPolicy.scala:133) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$SyncStrategy$$anonfun$syncHalf$1$$anonfun$apply$1.apply(BaseSynchingVersionPolicy.scala:103) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$SyncStrategy$$anonfun$syncHalf$1$$anonfun$apply$1.apply(BaseSynchingVersionPolicy.scala:103) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61) [scala-library-2.8.0.jar:na]
at scala.collection.immutable.List.foreach(List.scala:45) [scala-library-2.8.0.jar:na]
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:44) [scala-library-2.8.0.jar:na]
at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:42) [scala-library-2.8.0.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$SyncStrategy$$anonfun$syncHalf$1.apply(BaseSynchingVersionPolicy.scala:103) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$SyncStrategy$$anonfun$syncHalf$1.apply(BaseSynchingVersionPolicy.scala:97) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61) [scala-library-2.8.0.jar:na]
at scala.collection.immutable.List.foreach(List.scala:45) [scala-library-2.8.0.jar:na]
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:44) [scala-library-2.8.0.jar:na]
at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:42) [scala-library-2.8.0.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy$SyncStrategy.syncHalf(BaseSynchingVersionPolicy.scala:97) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.CorrelatedVersionPolicy.synchroniseParticipants(CorrelatedVersionPolicy.scala:36) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.differencing.BaseSynchingVersionPolicy.difference(BaseSynchingVersionPolicy.scala:75) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.actors.PairActor$$anonfun$receive$1.apply(PairActor.scala:41) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.actors.PairActor$$anonfun$receive$1.apply(PairActor.scala:38) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at se.scalablesolutions.akka.actor.Actor$$anonfun$2.apply(Actor.scala:485) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.Actor$$anonfun$2.apply(Actor.scala:475) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.Actor$class.apply(Actor.scala:471) [akka-core_2.8.0-0.10.jar:na]
at net.lshift.diffa.kernel.actors.PairActor.apply(PairActor.scala:29) [diffa-kernel-0.9.3-SNAPSHOT.jar:na]
at se.scalablesolutions.akka.actor.LocalActorRef.se$scalablesolutions$akka$actor$LocalActorRef$$dispatch(ActorRef.scala:1221) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.LocalActorRef$$anonfun$invoke$1.apply$mcV$sp(ActorRef.scala:1027) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.LocalActorRef$$anonfun$invoke$1.apply(ActorRef.scala:1022) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.LocalActorRef$$anonfun$invoke$1.apply(ActorRef.scala:1022) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.util.ReentrantGuard.withGuard(LockUtil.scala:18) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.actor.LocalActorRef.invoke(ActorRef.scala:1021) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.dispatch.MessageInvocation.invoke(MessageHandling.scala:27) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.dispatch.ExecutorBasedEventDrivenDispatcher.processMailbox(ExecutorBasedEventDrivenDispatcher.scala:139) [akka-core_2.8.0-0.10.jar:na]
at se.scalablesolutions.akka.dispatch.ExecutorBasedEventDrivenDispatcher$$anon$1.run(ExecutorBasedEventDrivenDispatcher.scala:115) [akka-core_2.8.0-0.10.jar:na]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_20]
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_20]
at se.scalablesolutions.akka.dispatch.ThreadPoolBuilder$MonitorableThread.run(ThreadPoolBuilder.scala:298) [akka-core_2.8.0-0.10.jar:na]
12:08:11.638 [qtp166552229-33] AbstractRestResource.scala:75 - Could not execute function:PairDef(abCorrelatedAmqp,correlated,1,abCorrelatedAmqp-us,abCorrelatedAmqp-ds,g1)
Comments and changes to this ticket
-

Ben Hood February 9th, 2011 @ 01:21 PM
- State changed from new to open
- Assigned user set to Ben Hood
-

Ben Hood February 9th, 2011 @ 01:31 PM
(from [9afd729497903d7b1e33e8bb1255fe01a346ffb0]) [#177] Convert fields to list to prevent concurrent modification exception https://github.com/lshift/diffa/commit/9afd729497903d7b1e33e8bb1255...
-

Paul Jones February 9th, 2011 @ 01:32 PM
- State changed from open to resolved
Problem appears to be because we're both iterating and modifying the list. Changing toSeq (which I previously thought fixed this) to a "toList" makes the problem go away. The tests that weren't finding it have now been updated so that they do.
-

-

-

Ben Hood February 9th, 2011 @ 04:06 PM
- State changed from resolved to closed
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
A Real Time Differencing Tool.
People watching this ticket
Referenced by
-
177
ConcurrentModificationException when clearing upstream version
(from [9afd729497903d7b1e33e8bb1255fe01a346ffb0])
[#177] ...
-
177
ConcurrentModificationException when clearing upstream version
(from [c8993b76322869a52bad229024a75ece3cd5e24a])
Merged ...