I had the following exception today once when running the tests in my project. I'm suspecting that it is caused by a concurrency bug in Guice (the line InjectorImpl.java:673 is the for loop statement - apparenty the list 'injectorsForClass' was null). The test where that exception happened (EntityRepositorySpec $WhenAnEntityIsOnlyReadAndNotModified.theEntityIsNotUpdatedAndThusCanBeReadConcurrentlyInManyTasks ()) has two threads running in parallel, and that exception caused the test to deadlock.
The sources of that project are here, in case you need them: http://github.com/orfjackal/dimdwarf/tree/2fb2a3d3e1c820c014b8f0d5280d362b227f383a 6.3.2009 19:01:18 net.orfjackal.dimdwarf.tasks.TransactionFilter filter INFO: Task failed, rolling back its transaction java.lang.NullPointerException at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java: 673) at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:682) at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:681) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java: 747) at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java: 680) at net.orfjackal.dimdwarf.serial.InjectObjectsOnDeserialization.afterResolve (InjectObjectsOnDeserialization.java:51) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl $MyObjectInputStream.resolveObject(ObjectSerializerImpl.java:135) at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java: 1377) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl.deserializeFromStream (ObjectSerializerImpl.java:82) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl.deserialize (ObjectSerializerImpl.java:65) at net.orfjackal.dimdwarf.gc.entities.GcAwareEntityRepository.readFromDatabase (GcAwareEntityRepository.java:80) at net.orfjackal.dimdwarf.gc.entities.GcAwareEntityRepository.read (GcAwareEntityRepository.java:70) at net.orfjackal.dimdwarf.entities.EntityManagerImpl.loadEntityFromDatabase (EntityManagerImpl.java:108) at net.orfjackal.dimdwarf.entities.EntityManagerImpl.getEntityById (EntityManagerImpl.java:97) at net.orfjackal.dimdwarf.entities.EntityRepositorySpec $WhenAnEntityIsOnlyReadAndNotModified$1.run(EntityRepositorySpec.java: 164) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 58) at net.orfjackal.dimdwarf.tasks.FilterChain.access$000 (FilterChain.java:40) at net.orfjackal.dimdwarf.tasks.FilterChain$FilterRecursion.run (FilterChain.java:73) at net.orfjackal.dimdwarf.entities.EntityFlushingFilter.filter (EntityFlushingFilter.java:50) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 56) at net.orfjackal.dimdwarf.tasks.FilterChain.access$000 (FilterChain.java:40) at net.orfjackal.dimdwarf.tasks.FilterChain$FilterRecursion.run (FilterChain.java:73) at net.orfjackal.dimdwarf.tasks.TransactionFilter.filter (TransactionFilter.java:54) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 56) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 50) at net.orfjackal.dimdwarf.tasks.TaskExecutor$1.run(TaskExecutor.java: 57) at net.orfjackal.dimdwarf.context.ThreadContext.runInContext (ThreadContext.java:51) at net.orfjackal.dimdwarf.tasks.TaskExecutor.execute (TaskExecutor.java:55) at net.orfjackal.dimdwarf.entities.EntityRepositorySpec $WhenAnEntityIsOnlyReadAndNotModified$3.run(EntityRepositorySpec.java: 177) at java.lang.Thread.run(Thread.java:619) Exception in thread "Thread-21" java.lang.NullPointerException at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java: 673) at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:682) at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:681) at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java: 747) at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java: 680) at net.orfjackal.dimdwarf.serial.InjectObjectsOnDeserialization.afterResolve (InjectObjectsOnDeserialization.java:51) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl $MyObjectInputStream.resolveObject(ObjectSerializerImpl.java:135) at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java: 1377) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl.deserializeFromStream (ObjectSerializerImpl.java:82) at net.orfjackal.dimdwarf.serial.ObjectSerializerImpl.deserialize (ObjectSerializerImpl.java:65) at net.orfjackal.dimdwarf.gc.entities.GcAwareEntityRepository.readFromDatabase (GcAwareEntityRepository.java:80) at net.orfjackal.dimdwarf.gc.entities.GcAwareEntityRepository.read (GcAwareEntityRepository.java:70) at net.orfjackal.dimdwarf.entities.EntityManagerImpl.loadEntityFromDatabase (EntityManagerImpl.java:108) at net.orfjackal.dimdwarf.entities.EntityManagerImpl.getEntityById (EntityManagerImpl.java:97) at net.orfjackal.dimdwarf.entities.EntityRepositorySpec $WhenAnEntityIsOnlyReadAndNotModified$1.run(EntityRepositorySpec.java: 164) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 58) at net.orfjackal.dimdwarf.tasks.FilterChain.access$000 (FilterChain.java:40) at net.orfjackal.dimdwarf.tasks.FilterChain$FilterRecursion.run (FilterChain.java:73) at net.orfjackal.dimdwarf.entities.EntityFlushingFilter.filter (EntityFlushingFilter.java:50) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 56) at net.orfjackal.dimdwarf.tasks.FilterChain.access$000 (FilterChain.java:40) at net.orfjackal.dimdwarf.tasks.FilterChain$FilterRecursion.run (FilterChain.java:73) at net.orfjackal.dimdwarf.tasks.TransactionFilter.filter (TransactionFilter.java:54) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 56) at net.orfjackal.dimdwarf.tasks.FilterChain.execute(FilterChain.java: 50) at net.orfjackal.dimdwarf.tasks.TaskExecutor$1.run(TaskExecutor.java: 57) at net.orfjackal.dimdwarf.context.ThreadContext.runInContext (ThreadContext.java:51) at net.orfjackal.dimdwarf.tasks.TaskExecutor.execute (TaskExecutor.java:55) at net.orfjackal.dimdwarf.entities.EntityRepositorySpec $WhenAnEntityIsOnlyReadAndNotModified$3.run(EntityRepositorySpec.java: 177) at java.lang.Thread.run(Thread.java:619) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-guice?hl=en -~----------~----~----~----~------~----~------~--~---
