Recovery after computer or JVM crash

Help
2013-06-10
2013-06-10
  • Dan Gravell
    Dan Gravell
    2013-06-10

    If I have DISABLE_TRANSACTIONS set to "TRUE", does that mean I can expect data corruption if I don't perform a recordManager.close before my app stops?

    Conversely, if I have transactions enabled, should JDBM databases be able to survive system/JVM crashes?

    Examples of the types of data corruption I'm seeing are:

    java.lang.Error: double get for block 104
            at jdbm.recman.RecordFile.get(RecordFile.java:466)
            at jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:267)
            at jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:233)
            at jdbm.recman.PhysicalRowIdManager.insert(PhysicalRowIdManager.java:81)
            at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:531)
            at jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:465)
            at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:392)
    

    Or:

    java.lang.Error: CRITICAL: page header magic for block 104 not OK 0
            at jdbm.recman.PageHeader.<init>(PageHeader.java:74)
            at jdbm.recman.DataPage.<init>(DataPage.java:63)
            at jdbm.recman.DataPage.getDataPageView(DataPage.java:75)
            at jdbm.recman.PhysicalRowIdManager.allocNew(PhysicalRowIdManager.java:268)
            at jdbm.recman.PhysicalRowIdManager.alloc(PhysicalRowIdManager.java:233)
            at jdbm.recman.PhysicalRowIdManager.insert(PhysicalRowIdManager.java:81)
            at jdbm.recman.BaseRecordManager.update(BaseRecordManager.java:531)
            at jdbm.recman.CacheRecordManager.updateCacheEntries(CacheRecordManager.java:465)
            at jdbm.recman.CacheRecordManager.commit(CacheRecordManager.java:392)
    
     
    • Alex Boisvert
      Alex Boisvert
      2013-06-10

      On Mon, Jun 10, 2013 at 4:37 AM, Dan Gravell gravelld2@users.sf.net wrote:

      If I have DISABLE_TRANSACTIONS set to "TRUE", does that mean I can expect
      data corruption if I don't perform a recordManager.close before my app
      stops?

      Yes.

      Conversely, if I have transactions enabled, should JDBM databases be able
      to survive system/JVM crashes?

      Yes.