We are utilizing Berkeley DB JE 7.5.11 as our key-value store. Our usage involves a primary database as a SortedMap<String, Val>, along with a secondary database as SortedMap<Date, Val>. We frequently add keys to the primary database using the SortedMap#put method, and periodically remove entries older than a specific value using the secondary database using secondaryMap.headSet(Date).clear().
While the system is functioning as expected, we have observed a continuous increase in the number of records within the internal expiration database (_jeExpiration). Seems that though we are not using the expiration feature, expiration records are still created whenever a new log files are added but are not deleted when the files are removed.
This seems to be ok as long as the service is running but it is causing delays during the POPULATE_EP stage whenever the service is restarted. In one instance when the expiration database had ~3 million records, the restart took ~30 minutes, it is also triggering a lot of eviction during the startup process probably adding to the delay.
Questions,
- What is the expected behavior? Shouldn't the expiration DB cleaned automatically ? Is there a known issue around it? Is there a way to trigger the cleanup of this DB ?
- Is it possible to disable EP completely (via EnvironmentConfig#getCreateEP to false) ?
Thanks in advance for the response!