Hi!
First, thanks to the people providing us with Qi4J, which I find as a quite
interesting technology to work with,

I am working for a project that already has deployed EventSourcing using
Qi4J as implemented in 1.3 (specifically eventsourcing-jdbm-1.3.0-RC1). This
has been working great until now

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.

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

Reply via email to