summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-08-09 09:59:02 +0200
committerMartin Polden <mpolden@mpolden.no>2018-08-09 09:59:02 +0200
commit810be6a27194607393e488a264c464684c317a7b (patch)
treee40c984716e7934ba8373113c79fd829dd452867 /node-repository
parent8711b9006eeeea75ec7fd297b5b6d8ccc4b86a09 (diff)
Extract method for read pattern
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index a9dcc15432b..7245e1dd19a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -322,11 +323,13 @@ public class CuratorDatabaseClient {
return curatorDatabase.lock(path, timeout);
}
+ private <T> Optional<T> read(Path path, Function<byte[], T> mapper) {
+ return curatorDatabase.getData(path).filter(data -> data.length > 0).map(mapper);
+ }
+
public Set<String> readInactiveJobs() {
try {
- byte[] data = curatorDatabase.getData(inactiveJobsPath()).get();
- if (data.length == 0) return new HashSet<>(); // inactive jobs has never been written
- return stringSetSerializer.fromJson(data);
+ return read(inactiveJobsPath(), stringSetSerializer::fromJson).orElseGet(HashSet::new);
}
catch (RuntimeException e) {
log.log(Level.WARNING, "Error reading inactive jobs, deleting inactive state");
@@ -351,11 +354,8 @@ public class CuratorDatabaseClient {
return root.append("inactiveJobs");
}
-
public Map<NodeType, Version> readInfrastructureVersions() {
- byte[] data = curatorDatabase.getData(infrastructureVersionsPath()).get();
- if (data.length == 0) return new HashMap<>(); // infrastructure versions have never been written
- return InfrastructureVersionsSerializer.fromJson(data);
+ return read(infrastructureVersionsPath(), InfrastructureVersionsSerializer::fromJson).orElseGet(HashMap::new);
}
public void writeInfrastructureVersions(Map<NodeType, Version> infrastructureVersions) {
@@ -373,4 +373,5 @@ public class CuratorDatabaseClient {
private Path infrastructureVersionsPath() {
return root.append("infrastructureVersions");
}
+
}