public void increment(String event, Attrs extraDimensions) {
        Objects.requireNonNull(event);
        Objects.requireNonNull(extraDimensions);
        if (counts.containsKey(event)) {
            // TODO(carl-mastrangelo): make this throw IllegalStateException after verifying this doesn't happen.
            logger.warn("Duplicate conn counter increment {}", event);
            return;
        }
        Attrs connDims = chan.attr(Server.CONN_DIMENSIONS).get();
        Map<String, String> dimTags = new HashMap<>(connDims.size() + extraDimensions.size());

        connDims.forEach((k, v) -> dimTags.put(k.name(), String.valueOf(v)));
        extraDimensions.forEach((k, v) -> dimTags.put(k.name(), String.valueOf(v)));

        dimTags.put("from", lastCountKey != null ? lastCountKey : "nascent");
        lastCountKey = event;
        Id id = registry.createId(metricBase.name() + '.' + event)
                .withTags(metricBase.tags())
                .withTags(dimTags);
        Gauge gauge = registry.gauge(id);

        synchronized (getLock(id)) {
            double current = gauge.value();
            gauge.set(Double.isNaN(current) ? 1 : current + 1);
        }
        counts.put(event, gauge);
    }
An array of locks to guard the gauges.   This is the same as Guava's Striped, but avoids the dep.
<p>
This can be removed after https://github.com/Netflix/spectator/issues/862 is fixed.
zuul-core/src/main/java/com/netflix/zuul/monitoring/ConnCounter.java