From b03114c536e7b1d633854ddf2f9746ce8f9c0b58 Mon Sep 17 00:00:00 2001 From: Carsten Otto Date: Fri, 12 Nov 2021 11:50:35 +0100 Subject: [PATCH] add cache for synced-to-chain --- .../lndmanagej/service/OwnNodeService.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/application/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java b/application/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java index 7dc444eb..684d12a2 100644 --- a/application/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java +++ b/application/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java @@ -1,17 +1,41 @@ package de.cotto.lndmanagej.service; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import de.cotto.lndmanagej.grpc.GrpcGetInfo; import org.springframework.stereotype.Component; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.concurrent.TimeUnit; + @Component public class OwnNodeService { + private static final int CACHE_EXPIRY_SECONDS = 30; + private final GrpcGetInfo grpcGetInfo; + private final LoadingCache syncedToChainCache; public OwnNodeService(GrpcGetInfo grpcGetInfo) { this.grpcGetInfo = grpcGetInfo; + CacheLoader loader = new CacheLoader<>() { + @Nonnull + @Override + public Boolean load(@Nullable String ignored) { + return isSyncedToChainWithoutCache(); + } + }; + syncedToChainCache = CacheBuilder.newBuilder() + .expireAfterWrite(CACHE_EXPIRY_SECONDS, TimeUnit.SECONDS) + .build(loader); } public boolean isSyncedToChain() { + return syncedToChainCache.getUnchecked(""); + } + + private boolean isSyncedToChainWithoutCache() { return grpcGetInfo.isSyncedToChain().orElse(false); } }