private static RrdDbPool resolvePool(RrdDbPool pool) { return pool != null ? pool : RrdDbPool.getInstance(); }
pool = RrdDbPool.getInstance();
private void releaseRrd(RrdDb rrd, Def def) throws IOException { String backend = def.getBackend(); if (poolUsed && backend == null) { RrdDbPool.getInstance().release(rrd); } else { rrd.close(); } }
@Override public void start() { super.start(); boolean filebasedbackend = backendFactory instanceof RrdFileBackendFactory; if(usepool || filebasedbackend) { try { String backendName = backendFactory.getName(); RrdBackendFactory.setDefaultFactory(backendName); logger.trace(Util.delayedFormatString("Store backend set to %s", backendName)); } catch (IllegalStateException e) { logger.warn("Trying to change default backend, a restart is needed"); } catch (Exception e) { throw new RuntimeException("Failed to configure RrdDbStoreFactory:" + e.getMessage(), e); } try { instance = RrdDbPool.getInstance(); instance.setCapacity(dbPoolSize); usepool = true; } catch (Exception e) { logger.warn("Trying to change rrd pool size, a restart is needed"); } } }
public static final void prepare(String backend, int dbPoolSize) { usepool = false; if(backend != null) { try { RrdBackendFactory.setDefaultFactory(backend); logger.trace(Util.delayedFormatString("Store backend set to %s", backend)); } catch (IllegalArgumentException e) { logger.fatal("Backend not configured: " + e.getMessage()); } catch (IllegalStateException e) { logger.warn("Trying to change default backend, a restart is needed"); } } StoreOpener.backend = RrdBackendFactory.getDefaultFactory(); if(StoreOpener.backend instanceof RrdFileBackendFactory && dbPoolSize != 0) { try { instance = RrdDbPool.getInstance(); instance.setCapacity(dbPoolSize); usepool = true; } catch (Exception e) { } } logger.debug(Util.delayedFormatString("Store backend used is %s", StoreOpener.backend.getName())); logger.debug(Util.delayedFormatString("use pool: %b %d", usepool, dbPoolSize)); }
private RrdDb getRrd(Def def) throws IOException { String path = def.getPath(), backend = def.getBackend(); if (poolUsed && backend == null) { return RrdDbPool.getInstance().requestRrdDb(path); } else if (backend != null) { return new RrdDb(path, true, RrdBackendFactory.getFactory(backend)); } else { return new RrdDb(path, true); } }