summaryrefslogtreecommitdiffstats
path: root/zkfacade
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-10-06 23:18:11 +0200
committerjonmv <venstad@gmail.com>2023-10-06 23:18:11 +0200
commit29348185c732e7904d626676c32627eed87bfae3 (patch)
tree47ca710df22ebf0f62f0248c355a852121af0b85 /zkfacade
parent66cff217a76224ceb0ffc0c35dd4339ed8ff9672 (diff)
Allow Java class names, which are the default singleton IDs
Diffstat (limited to 'zkfacade')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java5
1 files changed, 4 insertions, 1 deletions
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 f349ee8e9a4..0c7956de067 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java
@@ -38,6 +38,8 @@ import static java.util.logging.Level.WARNING;
class SingletonManager {
private static final Logger logger = Logger.getLogger(SingletonManager.class.getName());
+ private static final String partPattern = "[a-zA-Z0-9$_]([a-zA-Z0-9$_-]+){0,63}";
+ private static final Pattern idPattern = Pattern.compile(partPattern + "(\\." + partPattern + ")*");
private final Curator curator;
private final Clock clock;
@@ -55,7 +57,8 @@ class SingletonManager {
}
synchronized CompletableFuture<?> register(String singletonId, SingletonWorker singleton) {
- Validation.requireMatch(singletonId, "Singleton ID", Pattern.compile("[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}"));
+ Validation.requireMatch(singletonId, "Singleton ID", idPattern);
+ Validation.requireLength(singletonId, "Singleton ID", 1, 255);
String old = registrations.putIfAbsent(singleton, singletonId);
if (old != null) throw new IllegalArgumentException(singleton + " already registered with ID " + old);
count.merge(singletonId, 1, Integer::sum);