summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2021-02-26 19:54:12 +0100
committerValerij Fredriksen <valerij92@gmail.com>2021-02-26 19:54:12 +0100
commit2b9a03d6bdbf468015047ee08a37e839b70a3e73 (patch)
tree625af7213ce74c38b6faa724c6cdcbe912baf327
parent1454578133592494bfda4b2a07df51e66d7e03e6 (diff)
Code review fixes
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FirmwareChecks.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java19
-rw-r--r--vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java2
5 files changed, 16 insertions, 13 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
index 4c0b0f284c4..6c66421ee79 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
@@ -72,7 +72,7 @@ public class ArchiveUris {
archiveUri.map(ArchiveUris::normalizeUri).ifPresentOrElse(uri -> archiveUris.put(tenant, uri),
() -> archiveUris.remove(tenant));
db.writeArchiveUris(archiveUris);
- this.archiveUris.refresh(); // Throw away current cache
+ this.archiveUris.invalidate(); // Throw away current cache
log.info("Set archive URI for " + tenant + " to " + archiveUri.orElse(null));
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java
index 953ccaacb6b..a788b1855d8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImages.java
@@ -65,7 +65,7 @@ public class ContainerImages {
image.ifPresentOrElse(img -> images.put(nodeType, img),
() -> images.remove(nodeType));
db.writeContainerImages(images);
- this.images.refresh(); // Throw away current cache
+ this.images.invalidate(); // Throw away current cache
log.info("Set container image for " + nodeType + " nodes to " + image.map(DockerImage::asString).orElse(null));
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FirmwareChecks.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FirmwareChecks.java
index ef66891af7c..c627a6e9c71 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FirmwareChecks.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FirmwareChecks.java
@@ -42,13 +42,13 @@ public class FirmwareChecks {
/** Requests a firmware check for all hosts managed by this node repository. */
public void request() {
database.writeFirmwareCheck(Optional.of(clock.instant()));
- checkAfter.refresh();
+ checkAfter.invalidate();
}
/** Clears any outstanding firmware checks for this node repository. */
public void cancel() {
database.writeFirmwareCheck(Optional.empty());
- checkAfter.refresh();
+ checkAfter.invalidate();
}
}
diff --git a/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java b/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
index 07ce1250855..49b8dbdca8a 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
@@ -7,13 +7,15 @@ import java.time.Instant;
import java.util.function.Supplier;
/**
- * Supplier that caches the value for a given duration with ability to invalidate at demand.
+ * Supplier that caches the value for a given duration with ability to invalidate on demand.
* Is thread safe.
*
* @author freva
*/
public class CachedSupplier<T> implements Supplier<T> {
+ private final Object monitor = new Object();
+
private final Supplier<T> delegate;
private final Duration period;
private final Clock clock;
@@ -34,18 +36,19 @@ public class CachedSupplier<T> implements Supplier<T> {
@Override
public T get() {
- synchronized (this) {
- if (clock.instant().isAfter(nextRefresh))
- refresh();
+ synchronized (monitor) {
+ if (clock.instant().isAfter(nextRefresh)) {
+ this.value = delegate.get();
+ this.nextRefresh = clock.instant().plus(period);
+ }
}
return value;
}
- public void refresh() {
- synchronized (this) {
- this.value = delegate.get();
- this.nextRefresh = clock.instant().plus(period);
+ public void invalidate() {
+ synchronized (monitor) {
+ this.nextRefresh = Instant.MIN;
}
}
diff --git a/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
index b0dc1262ebc..342d76b43d6 100644
--- a/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
+++ b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
@@ -29,7 +29,7 @@ public class CachedSupplierTest {
assertEquals(2, supplier.get().intValue());
assertEquals(2, supplier.get().intValue());
- supplier.refresh();
+ supplier.invalidate();
assertEquals(3, supplier.get().intValue());
assertEquals(3, supplier.get().intValue());