6 package com.vesoft.nebula.client.storage;
8 import com.vesoft.nebula.client.graph.data.HostAddress;
9 import java.io.Serializable;
10 import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
11 import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
17 private static final Logger LOGGER = LoggerFactory.getLogger(
StorageConnPool.class);
18 private static final long serialVersionUID = -6459633350295900558L;
20 private final GenericKeyedObjectPool<HostAddress, GraphStorageConnection> keyedPool;
26 GenericKeyedObjectPoolConfig poolConfig =
new GenericKeyedObjectPoolConfig();
27 poolConfig.setMaxIdlePerKey(config.getMaxConnsSize());
28 poolConfig.setMinIdlePerKey(config.getMinConnsSize());
29 poolConfig.setMinEvictableIdleTimeMillis(
30 config.getIdleTime() <= 0 ? Long.MAX_VALUE : config.getIdleTime());
31 poolConfig.setMaxTotal(config.getMaxTotal());
32 poolConfig.setMaxTotalPerKey(config.getMaxTotalPerKey());
34 keyedPool =
new GenericKeyedObjectPool<>(poolFactory);
35 keyedPool.setConfig(poolConfig);
43 return keyedPool.borrowObject(address);
47 keyedPool.returnObject(address, connection);
51 return keyedPool.getNumActive(address);
55 return keyedPool.getNumIdle(address);