List of usage examples for org.apache.commons.pool2.impl GenericKeyedObjectPoolConfig setLifo
public void setLifo(boolean lifo)
From source file:com.google.devtools.build.lib.worker.WorkerModule.java
@Override public void beforeCommand(Command command, CommandEnvironment env) { this.env = env; env.getEventBus().register(this); if (workers == null) { Path logDir = env.getRuntime().getOutputBase().getRelative("worker-logs"); try {/*w w w.j a v a 2s . c o m*/ logDir.createDirectory(); } catch (IOException e) { env.getReporter().handle(Event.error("Could not create directory for worker logs: " + logDir)); } GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig(); // It's better to re-use a worker as often as possible and keep it hot, in order to profit // from JIT optimizations as much as possible. config.setLifo(true); // Check for & deal with idle workers every 5 seconds. config.setTimeBetweenEvictionRunsMillis(5 * 1000); // Always test the liveliness of worker processes. config.setTestOnBorrow(true); config.setTestOnCreate(true); config.setTestOnReturn(true); config.setTestWhileIdle(true); // Don't limit the total number of worker processes, as otherwise the pool might be full of // e.g. Java workers and could never accommodate another request for a different kind of // worker. config.setMaxTotal(-1); workers = new WorkerPool(new WorkerFactory(), config); workers.setReporter(env.getReporter()); workers.setLogDirectory(logDir); } }
From source file:org.springframework.ldap.pool2.factory.PooledContextSource.java
private GenericKeyedObjectPoolConfig getConfig(PoolConfig poolConfig) { GenericKeyedObjectPoolConfig objectPoolConfig = new GenericKeyedObjectPoolConfig(); objectPoolConfig.setMaxTotalPerKey(poolConfig.getMaxTotalPerKey()); objectPoolConfig.setMaxTotal(poolConfig.getMaxTotal()); objectPoolConfig.setMaxIdlePerKey(poolConfig.getMaxIdlePerKey()); objectPoolConfig.setMinIdlePerKey(poolConfig.getMinIdlePerKey()); objectPoolConfig.setTestWhileIdle(poolConfig.isTestWhileIdle()); objectPoolConfig.setTestOnReturn(poolConfig.isTestOnReturn()); objectPoolConfig.setTestOnCreate(poolConfig.isTestOnCreate()); objectPoolConfig.setTestOnBorrow(poolConfig.isTestOnBorrow()); objectPoolConfig.setTimeBetweenEvictionRunsMillis(poolConfig.getTimeBetweenEvictionRunsMillis()); objectPoolConfig.setEvictionPolicyClassName(poolConfig.getEvictionPolicyClassName()); objectPoolConfig.setMinEvictableIdleTimeMillis(poolConfig.getMinEvictableIdleTimeMillis()); objectPoolConfig.setNumTestsPerEvictionRun(poolConfig.getNumTestsPerEvictionRun()); objectPoolConfig.setSoftMinEvictableIdleTimeMillis(poolConfig.getSoftMinEvictableIdleTimeMillis()); objectPoolConfig.setJmxEnabled(poolConfig.isJmxEnabled()); objectPoolConfig.setJmxNameBase(poolConfig.getJmxNameBase()); objectPoolConfig.setJmxNamePrefix(poolConfig.getJmxNamePrefix()); objectPoolConfig.setMaxWaitMillis(poolConfig.getMaxWaitMillis()); objectPoolConfig.setFairness(poolConfig.isFairness()); objectPoolConfig.setBlockWhenExhausted(poolConfig.isBlockWhenExhausted()); objectPoolConfig.setLifo(poolConfig.isLifo()); return objectPoolConfig; }