// 丢弃连接
public void discardConnection(DruidConnectionHolder holder) {
    if (holder == null) {
        return;
    }

    Connection conn = holder.getConnection();
    if (conn != null) {
        // close 掉真正的连接对象,一般调用该方法传入的 connection 对象都是最原始的驱动连接对象,所以这里并不会触发 recycle
        JdbcUtils.close(conn);
    }

    lock.lock();
    try {
        if (holder.discard) {
            return;
        }

        if (holder.active) {
            // 活跃连接数 -1
            activeCount--;
            holder.active = false;
        }
        // 丢弃连接数 +1
        discardCount++;

        holder.discard = true;

        if (activeCount <= minIdle) {
            // 唤起一次主流程3新增连接
            emptySignal();
        }
    } finally {
        lock.unlock();
    }
}