This discussion is archived
10 Replies Latest reply: Jul 17, 2007 7:47 AM by greybird RSS

<INCompressor name="INCompressor"/> caught DatabaseException

581743 Newbie
Currently Being Moderated
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 Pro
    Currently Being Moderated
    Hello Liu,

    Are you using Deferred Write DBs?

    Thanks.

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

    Are you using Deferred Write DBs?

    Thanks.

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

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

    Thanks.

    Charles Lamb
  • 4. Re: <INCompressor name="INCompressor"/> caught DatabaseException
    581743 Newbie
    Currently Being Moderated
    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 Pro
    Currently Being Moderated
    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 Pro
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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 Pro
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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 Expert
    Currently Being Moderated
    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