synchronized void publishMetrics(MetricsBuffer buffer) {
        int dropped = 0;
        for (MetricsSinkAdapter sa : sinks.values()) {
            long startTime = System.currentTimeMillis();
            dropped += sa.putMetrics(buffer, logicalTime) ? 0 : 1;
            publishStat.add(System.currentTimeMillis() - startTime);
        }
        dropStat.incr(dropped);
    }