From 6c819ef2d6679cff4e06133c54ff09779776d914 Mon Sep 17 00:00:00 2001 From: jonmv Date: Fri, 6 Oct 2023 12:18:49 +0200 Subject: More restrictive singleton ID --- .../src/main/java/com/yahoo/vespa/curator/SingletonManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'zkfacade/src') diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java index d203f22a474..f349ee8e9a4 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java @@ -1,5 +1,6 @@ package com.yahoo.vespa.curator; +import ai.vespa.validation.Validation; import com.yahoo.concurrent.UncheckedTimeoutException; import com.yahoo.jdisc.Metric; import com.yahoo.path.Path; @@ -23,6 +24,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Logger; +import java.util.regex.Pattern; import static java.util.logging.Level.FINE; import static java.util.logging.Level.INFO; @@ -53,9 +55,7 @@ class SingletonManager { } synchronized CompletableFuture register(String singletonId, SingletonWorker singleton) { - if (singletonId.isEmpty() || singletonId.contains("/") || singletonId.contains("..")) { - throw new IllegalArgumentException("singleton ID must be non-empty, and may not contain '/' or '..', but got " + singletonId); - } + Validation.requireMatch(singletonId, "Singleton ID", Pattern.compile("[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}")); String old = registrations.putIfAbsent(singleton, singletonId); if (old != null) throw new IllegalArgumentException(singleton + " already registered with ID " + old); count.merge(singletonId, 1, Integer::sum); -- cgit v1.2.3