My Oracle Support Banner

After a Period of Extended Use the Evictor Goes Into an Infinite Loop (Doc ID 436388.1)

Last updated on FEBRUARY 25, 2020

Applies to:

Berkeley DB Java Edition - Version 3.2.23 and later
Information in this document applies to any platform.

Symptoms

After running a multithreaded JE application for a long period of time the application hangs and the threads are blocked waiting for one that is writing to the database. The stack trace of the thread that is trying to write to the database should look like this:

at com.sleepycat.je.evictor.Evictor.doEvict(Evictor.java:247) 
- locked <0x983c18b0> (a com.sleepycat.je.evictor.Evictor) 
at com.sleepycat.je.evictor.Evictor.doCriticalEviction(Evictor.java:273) 
at com.sleepycat.je.dbi.CursorImpl.close(CursorImpl.java:669) 
at com.sleepycat.je.Cursor.close(Cursor.java:249) 
- locked <0x98785bf0> (a com.sleepycat.je.Cursor) 
at com.sleepycat.je.Database.putInternal(Database.java:666) 
at com.sleepycat.je.Database.put(Database.java:608) 

You can attach a debugger at this point and step it back and forth between lines 245 and 247 in the Evictor code. If you observe that the code never passes this loop then you’re affected by this problem in the Cleaner thread. A complete stack trace of the thread doing the put could look like this:

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Cause
Solution

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.