diff options
author | Valerij Fredriksen <valerij92@gmail.com> | 2021-02-26 19:54:12 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerij92@gmail.com> | 2021-02-26 19:54:12 +0100 |
commit | 2b9a03d6bdbf468015047ee08a37e839b70a3e73 (patch) | |
tree | 625af7213ce74c38b6faa724c6cdcbe912baf327 | |
parent | 1454578133592494bfda4b2a07df51e66d7e03e6 (diff) |
Code review fixes
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()); |