Double get for block 0? (jdbm pre-1.0 cvs)

2005-08-22
2013-06-03
  • Bryan Thompson
    Bryan Thompson
    2005-08-22

    Hello,

    I am seeing an error message thrown and I was wondering if anyone could shed some light on it.  Please note that I am using the pre-1.0 CVS code base, so it has none of the patches that have been recently introduced.  This code base compares as identical to the 1.0 CVS except for the VERSION and build.xml files.

    Thanks,

    -bryan

    java.lang.Error: double get for block 0
        at jdbm.recman.RecordFile.get(RecordFile.java:153)
        at jdbm.recman.LogicalRowIdManager.fetch(LogicalRowIdManager.java:136)
        at jdbm.recman.BaseRecordManager.fetch(BaseRecordManager.java:337)
        at jdbm.recman.CacheRecordManager.fetch(CacheRecordManager.java:304)
        at jdbm.recman.CacheRecordManager.fetch(CacheRecordManager.java:283)
        at jdbm.om.JDBMObjectManager.fetch(JDBMObjectManager.java:1040)
        at org.CognitiveWeb.generic.store.jdbm.JDBMObjectManager.fetch(JDBMObjectManager.java:292)
        at jdbm.om.JDBMObject.fetch(JDBMObject.java:451)
        at org.CognitiveWeb.generic.store.jdbm.JDBMGenericData.toString(JDBMGenericData.java:931)
        at org.CognitiveWeb.generic.store.jdbm.JDBMGeneric.toString(JDBMGeneric.java:407)
        at java.lang.String.valueOf(String.java:2506)
        at java.lang.StringBuffer.append(StringBuffer.java:433)
        at org.CognitiveWeb.generic.store.jdbm.JDBMGenericData.removePropertyChangeListener(JDBMGenericData.java:3577)
        at org.CognitiveWeb.generic.store.jdbm.JDBMGeneric.removePropertyChangeListener(JDBMGeneric.java:1684)
        at org.CognitiveWeb.generic.store.jdbm.JDBMGenericPropertyChangeListenerTestCase.test_addPropertyChangeListener_002(JDBMGenericPropertyChangeListenerTestCase.java:245)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
        at java.lang.reflect.Method.invoke(Method.java:391)
        at junit.framework.TestCase.runTest(TestCase.java:154)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:436)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:311)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

     
    • Alex Boisvert
      Alex Boisvert
      2005-08-22

      Are you trying to fetch recid 0?  If so, this is the expected behavior.

      And now that I think of it we should really change java.lang.Error to java.io IOException in that section of the code and throw an IllegalParameterException in fetch().  It would make for better error reporting.

      alex

       
      • Bryan Thompson
        Bryan Thompson
        2005-08-22

        I'll look at what happens under the debugger.  At "my" end, the call stack begins within a

        if( recid != 0 ) {

           ...fetch( recid )

        }

        test, so I think that there is something more complex going on.

        -bryan