10 Replies Latest reply: Jul 17, 2007 9:47 AM by greybird RSS

    <INCompressor name="INCompressor"/> caught DatabaseException

    581743
      Recently, JE Always report this exception to me.

      Exception stack:
      <INCompressor name="INCompressor"/> caught exception: com.sleepycat.je.DatabaseException: (JE 3.2.29) fetchTarget of null lsn parent IN=226141 lastFullVersion=0xffffffff/0xffffffff parent.getDirty()=true state=10 NULL_LSN without KnownDeleted
      com.sleepycat.je.DatabaseException: (JE 3.2.29) fetchTarget of null lsn parent IN=226141 lastFullVersion=0xffffffff/0xffffffff parent.getDirty()=true state=10 NULL_LSN without KnownDeleted
      at com.sleepycat.je.tree.IN.fetchTarget(IN.java:942)
      at com.sleepycat.je.tree.BIN.compress(BIN.java:670)
      at com.sleepycat.je.incomp.INCompressor.compressBin(INCompressor.java:503)
      at com.sleepycat.je.incomp.INCompressor.doCompress(INCompressor.java:414)
      at com.sleepycat.je.incomp.INCompressor.onWakeup(INCompressor.java:342)
      at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:191)
      at java.lang.Thread.run(Thread.java:619)
      Continuing

      It often occurs when almost all the buffer of JE is used.
      Maybe this is the very moment that JE is writing buffer content into the disk.
      If I increase the buffer size,the appearance of this exception will be delayed.
      The program continues running after the exception.
      Is this a serious problem I must deal with or I can ignored it?
      Why this message appear?
      Thanks!
        • 1. Re: <INCompressor name="INCompressor"/> caught DatabaseException
          Charles Lamb
          Hello Liu,

          Are you using Deferred Write DBs?

          Thanks.

          Charles Lamb
          • 2. Re: <INCompressor name="INCompressor"/> caught DatabaseException
            581743
            Hello Liu,

            Are you using Deferred Write DBs?

            Thanks.

            Charles Lamb
            Yes.
            • 3. Re: <INCompressor name="INCompressor"/> caught DatabaseException
              Charles Lamb
              Liu,

              Are you using duplicates? Are your deletes transactional or non-transactional?

              Thanks.

              Charles Lamb
              • 4. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                581743
                Liu,

                Are you using duplicates? Are your deletes
                transactional or non-transactional?

                Thanks.

                Charles Lamb
                We're using JE in our Distributed Internet search engine. My project works as a Distributed Database server.
                The exception often occurs after we recreate our full-text index for it.

                Yes,I'm using duplicates database.
                I have a background thread to delete unused entries in my database.
                The code:
                ----------------------------
                failCountCursor = conn.getFailCountIndex().openSecondaryCursor(null,null);
                faildCountRetVal = failCountCursor.getSearchKeyRange(key,pKey,value,LockMode.READ_UNCOMMITTED);
                //Code judging if the entry should be deleted......
                conn.getDb().delete(null,pKey);
                -----------------------------
                When my program shutdown,the cursor will be closed, or it will always be on a OPEN state.

                I deleted them non-transactional.

                There's one thing I must emphasize, before we recreate our index,we stopped all threads,and cursors work on our database.(But in fact,there are so many cursors in our program,we are not sure if there is any "alive" cursor,or active operation on my database).

                Message was edited by:
                user578740
                • 5. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                  Charles Lamb
                  Liu,

                  Please drop me an email (charles.lamb). I'll eventually need to send you a new .jar file.

                  Thanks.

                  Charles Lamb
                  • 6. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                    Charles Lamb
                    Liu,

                    I have reproduced this problem and I am working on a fix. I'll let you know when I have more details.

                    Regards,

                    Charles Lamb

                    The SR for this is 15588.

                    Message was edited by:
                    Charles Lamb
                    • 7. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                      581743
                      Thank you!
                      If u want to know more details about my problem or you have fixed this problem, you may contact me with this email: Lamfeeling@126.com
                      • 8. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                        Charles Lamb
                        Liu, this is fixed by JE 3.2.32. I'll email the jar to you.

                        Regards,

                        Charles Lamb
                        • 9. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                          581743
                          I'm very sorry to reply you so late because of my final exams.

                          I'm also very very sorry to tell u, the jar u sent to me doesn't work well with our project. My code even doesnt work now.

                          the problem shows this message:

                          com.sleepycat.je.DatabaseException: (JE 3.2.32) Secondary Webs's state index is corrupt: the primary record contains a key that is not present in the secondary
                          at com.sleepycat.je.SecondaryDatabase.deleteKey(SecondaryDatabase.java:645)
                          at com.sleepycat.je.SecondaryDatabase.updateSecondary(SecondaryDatabase.java:563)
                          at com.sleepycat.je.SecondaryTrigger.databaseUpdated(SecondaryTrigger.java:42)
                          at com.sleepycat.je.Database.notifyTriggers(Database.java:1334)
                          at com.sleepycat.je.Cursor.putInternal(Cursor.java:770)
                          at com.sleepycat.je.Database.putInternal(Database.java:662)
                          at com.sleepycat.je.Database.put(Database.java:608)
                          at daphne.worker.WebBaseWorker.setEntry(WebBaseWorker.java:74)
                          at daphne.worker.WebBaseWorker.setEntryState(WebBaseWorker.java:134)
                          at daphne.ServerImp.addKeywords(ServerImp.java:181)
                          at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
                          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                          at java.lang.reflect.Method.invoke(Method.java:597)
                          at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
                          at sun.rmi.transport.Transport$1.run(Transport.java:159)
                          at java.security.AccessController.doPrivileged(Native Method)
                          at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
                          at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
                          at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
                          at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
                          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
                          at java.lang.Thread.run(Thread.java:619)

                          My code fits well with the 3.23.29 jar, except INCompressor error.
                          this exception shows when I update records.
                          I will let u know more details after our test.

                          Message was edited by:
                          user578740

                          Message was edited by:
                          user578740
                          • 10. Re: <INCompressor name="INCompressor"/> caught DatabaseException
                            greybird
                            Hi,

                            If you were not using transactions, and you had an earlier error of some kind (even simply a deadlock), then the secondary could have become corrupt. Transactions are required to guarantee integrity when errors occur while updating secondary indices.

                            Mark