logger = LoggerUtils.getLogger(getClass());
reentrancyGuard = new ReentrancyGuard(envImpl, logger);
shutdownRequested = new AtomicBoolean(false);
DbConfigManager configManager = envImpl.getConfigManager();
int corePoolSize =
configManager.getInt(EnvironmentParams.EVICTOR_CORE_THREADS);
int maxPoolSize =
configManager.getInt(EnvironmentParams.EVICTOR_MAX_THREADS);
long keepAliveTime =
configManager.getDuration(EnvironmentParams.EVICTOR_KEEP_ALIVE);
terminateMillis = configManager.getDuration
(EnvironmentParams.EVICTOR_TERMINATE_TIMEOUT);
RejectedExecutionHandler rejectHandler =
new RejectEvictHandler(nThreadUnavailable);
evictionPool =
new ThreadPoolExecutor(corePoolSize,
maxPoolSize,
keepAliveTime,
TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(1),
new StoppableThreadFactory(envImpl,
"JEEvictor",
logger),
rejectHandler);
runEvictor =
configManager.getBoolean(EnvironmentParams.ENV_RUN_EVICTOR);
allowBinDeltas = configManager.getBoolean
(EnvironmentParams.EVICTOR_ALLOW_BIN_DELTAS);
/*
* Request notification of mutable property changes. Do this after all
* fields in the evictor have been initialized, in case this is called