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
-~----------~----~----~----~------~----~------~--~---

Reply via email to