On 6/17/11 16:58 , Dag Blakstad wrote:
For the next release we need to add a new Mixin to one of our domain
objects. This Mixin maintains a list of objects. The list contains objects
with some simple Properties, including a list of Strings.
This is mostly working nicely, but in some occasions the eventstore seems to
be corrupted.

Does the EventStore recover, i.e. is it intermittent or are you screwed after you start getting these errors? Do you have any idea how many events are in the store?

/Rickard


An initial error occurs when storing a domain object:
17.06. 10:16:16,113 835116 [btpool0-4] ERROR org.mortbay.log - Nested in
javax.servlet.ServletException: java.lang.Error: double get for block 20360:
java.lang.Error: double get for block 20360
at jdbm.recman.RecordFile.get(RecordFile.java:153)
at jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:200)
at jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:175)
at jdbm.recman.PhysicalRowIdManager.update(PhysicalRowIdManager.java:100)
at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:298)
at
jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:409)
at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:340)
at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:341)
at
org.qi4j.library.eventsourcing.domain.source.jdbm.JdbmEventStoreService$JdbmEventStoreMixin.storeEvents0(JdbmEventStoreService.java:182)
at
org.qi4j.library.eventsourcing.domain.source.AbstractEventStoreMixin.storeEvents(AbstractEventStoreMixin.java:92)
at
org.qi4j.library.eventsourcing.domain.source.jdbm.JdbmEventStoreService.storeEvents(Unknown
Source)

I have not discovered a pattern of why and when this happens yet, and mostly
it works without errors.

Then subsequently a different error seems to occur persistently, and
persisting domain objects fails:
17.06. 10:34:48,702 183461 [btpool0-2] ERROR org.mortbay.log  - Nested in
javax.servlet.ServletException: java.lang.Error: Offset too large for record
header (20360:10885):
java.lang.Error: Offset too large for record header (20360:10885)
         at jdbm.recman.RecordHeader.<init>(RecordHeader.java:75)
         at
jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:222)
         at
jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:175)
         at
jdbm.recman.PhysicalRowIdManager.update(PhysicalRowIdManager.java:100)
         at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:298)
         at
jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:409)
         at
jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:340)
         at
jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:341)
         at
org.qi4j.library.eventsourcing.domain.source.jdbm.JdbmEventStoreService$JdbmEventStoreMixin.storeEvents0(JdbmEventStoreService.java:182)
         at
org.qi4j.library.eventsourcing.domain.source.AbstractEventStoreMixin.storeEvents(AbstractEventStoreMixin.java:92)
         at
org.qi4j.library.eventsourcing.domain.source.jdbm.JdbmEventStoreService.storeEvents(Unknown
Source)
         at
org.qi4j.library.eventsourcing.domain.factory.UnitOfWorkNotificationConcern$1.afterCompletion(UnitOfWorkNotificationConcern.java:109)

Has anybody else run into this problem with eventsourcing in Qi4J? Can i
adjust any parameters in the Jdbm store to resolve the problem?

By reading in Qi4j's Jira database I learned that the current implementation
is not judged as production ready.
https://ops4j1.jira.com/browse/QI-280

If this is related to my problem, what will be the recommended solution?

Best Regards,
Dag
http://twitter.com/dagb
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev


_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to