|
9 | 9 | import com.scalar.db.exception.storage.ExecutionException; |
10 | 10 | import com.scalar.db.util.ScalarDbUtils; |
11 | 11 | import java.util.Objects; |
| 12 | +import java.util.Optional; |
12 | 13 | import java.util.concurrent.CompletionException; |
13 | 14 | import java.util.concurrent.TimeUnit; |
14 | 15 | import javax.annotation.Nullable; |
15 | 16 | import javax.annotation.concurrent.ThreadSafe; |
16 | 17 |
|
17 | | -/** A class that manages and caches virtual table information */ |
| 18 | +/** A class that manages and caches virtual table information. */ |
18 | 19 | @ThreadSafe |
19 | 20 | public class VirtualTableInfoManager { |
20 | 21 |
|
21 | | - private final LoadingCache<TableKey, VirtualTableInfo> virtualTableInfoCache; |
| 22 | + private final LoadingCache<TableKey, Optional<VirtualTableInfo>> virtualTableInfoCache; |
22 | 23 |
|
23 | 24 | public VirtualTableInfoManager(DistributedStorageAdmin admin, long cacheExpirationTimeSecs) { |
24 | 25 | Caffeine<Object, Object> builder = Caffeine.newBuilder(); |
25 | 26 | if (cacheExpirationTimeSecs >= 0) { |
26 | 27 | builder.expireAfterWrite(cacheExpirationTimeSecs, TimeUnit.SECONDS); |
27 | 28 | } |
28 | 29 | virtualTableInfoCache = |
29 | | - builder.build(key -> admin.getVirtualTableInfo(key.namespace, key.table).orElse(null)); |
| 30 | + builder.build(key -> admin.getVirtualTableInfo(key.namespace, key.table)); |
30 | 31 | } |
31 | 32 |
|
32 | 33 | /** |
@@ -60,7 +61,9 @@ public VirtualTableInfo getVirtualTableInfo(String namespace, String table) |
60 | 61 | throws ExecutionException { |
61 | 62 | try { |
62 | 63 | TableKey key = new TableKey(namespace, table); |
63 | | - return virtualTableInfoCache.get(key); |
| 64 | + Optional<VirtualTableInfo> virtualTableInfo = virtualTableInfoCache.get(key); |
| 65 | + assert virtualTableInfo != null; |
| 66 | + return virtualTableInfo.orElse(null); |
64 | 67 | } catch (CompletionException e) { |
65 | 68 | throw new ExecutionException( |
66 | 69 | CoreError.GETTING_VIRTUAL_TABLE_INFO_FAILED.buildMessage( |
|
0 commit comments