public void printStackTrace() { if (traceCaller.value() && lastStackTracePrint + traceWait.interval() < System.currentTimeMillis()) { lastStackTracePrint = System.currentTimeMillis(); LinkedList<ConnectionTrace> list = new LinkedList<ConnectionTrace>(getStackTraces().values()); Collections.sort(list); log().f("Connection Usage",list.size()); for (ConnectionTrace trace :list) { trace.log(log()); } } }
@Override public void close() { if (instance == null) return; log().t(id,"close",instance.getInstanceId()); setUsed(false); // close of the proxy will free the connection if (traceCaller.value()) pool.getStackTraces().remove(MSystem.getObjectId(this)); }
public DbConnectionProxy(DbPool pool, DbConnection instance) { if (traceCaller.value()) { this.pool = pool; pool.getStackTraces().put(MSystem.getObjectId(this), new ConnectionTrace(this)); // instance.setUsedTrace(createStackTrace); } this.instance = instance; log().t(id,"created",instance.getInstanceId()); }
@Override protected void finalize() throws Throwable { log().t(id,"finalized",instance.getInstanceId()); if (instance != null) { log().i(id,"final closed", instance.getInstanceId() ); ConnectionTrace trace = pool.getStackTraces().get(MSystem.getObjectId(this)); if (trace != null) trace.log(log()); setUsed(false); } if (traceCaller.value()) pool.getStackTraces().remove(MSystem.getObjectId(this)); super.finalize(); }