Code review comment: Could value be null？ I see code in line 205 could be null.

Code under review:
private TwoLevelContentCache() {
            super();

            Caffeine<Object, Object> diskCacheBuilder = Caffeine.newBuilder();
            this.diskCache = diskCacheBuilder.maximumWeight(DISK_CACHE_CAPACITY)
                    .expireAfterAccess(DISK_CACHE_EXPIRATION_SECONDS, TimeUnit.SECONDS)
                    .weigher((Weigher<String, DiskCacheEntry>) (key, value) ->
                            value.useCount == 0 ? (int) Math.min(value.length, Integer.MAX_VALUE) : 0)
                    .recordStats()
                    
                    .writer(new CacheWriter<String, DiskCacheEntry>() {
                        @Override
                        public void write(@NonNull String s, @NonNull DiskCacheEntry diskCacheEntry) {

                        }

                        @Override
                        public void delete(@NonNull String s, @Nullable DiskCacheEntry diskCacheEntry,
                                           @NonNull RemovalCause removalCause) {
                            LOG.debug(s + " to be eliminated from disk, reason: " + removalCause);
                            HadoopOutputFile hadoopOutputFile = (HadoopOutputFile) IOUtil.getOutputFile(
                                    METADATA_CACHE_DISK_PATH, s);
                            try {
                                hadoopOutputFile.getFileSystem().delete(hadoopOutputFile.getPath(), false);
                            } catch (Exception e) {
                                LOG.warn("failed on deleting file :" + hadoopOutputFile.getPath());
                            }
                        }
                    }).build();

            Caffeine<Object, Object> builder = Caffeine.newBuilder();
            this.memCache = builder.maximumWeight(MEMORY_CACHE_CAPACITY)
                    .expireAfterAccess(MEMORY_CACHE_EXPIRATION_SECONDS, TimeUnit.SECONDS)
                    .weigher((Weigher<String, CacheEntry>) (key, value) -> (int) Math.min(value.length, Integer.MAX_VALUE))
                    .recordStats()
                    .removalListener(((key, value, cause) -> {
                        LOG.debug(key + " to be eliminated to disk, reason: " + cause);
                        if (isExistOnDiskCache(key)) {
                            LOG.debug(key + " has cached on disk");
                            return;
                        }
                        this.getDiskCacheEntry(key, k -> DiskCacheEntry.newDiskCacheEntry(
                                ByteBufferInputStream.wrap(value.buffers), value.length, key));
                    })).build();

            loadMetadataDiskCache();
        }

Line commented on: return;

Revised code:
private TwoLevelContentCache() {
            super();

            Caffeine<Object, Object> diskCacheBuilder = Caffeine.newBuilder();
            this.diskCache = diskCacheBuilder.maximumWeight(DISK_CACHE_CAPACITY)
                    .expireAfterAccess(DISK_CACHE_EXPIRATION_SECONDS, TimeUnit.SECONDS)
                    .weigher((Weigher<String, DiskCacheEntry>) (key, value) ->
                            value.useCount == 0 ? (int) Math.min(value.length, Integer.MAX_VALUE) : 0)
                    .recordStats()
                    
                    .evictionListener((key, value, cause) -> {
                        LOG.debug("{} to be eliminated from disk, reason: {}", key, cause);
                        IOUtil.deleteLocalFileWithRemotePath(key);
                    }).build();

            Caffeine<Object, Object> builder = Caffeine.newBuilder();
            this.memCache = builder.maximumWeight(MEMORY_CACHE_CAPACITY)
                    .expireAfterAccess(MEMORY_CACHE_EXPIRATION_SECONDS, TimeUnit.SECONDS)
                    .weigher((Weigher<String, CacheEntry>) (key, value) -> (int) Math.min(value.length, Integer.MAX_VALUE))
                    .recordStats()
                    .removalListener(((key, value, cause) -> {
                        LOG.debug(key + " to be eliminated to disk, reason: " + cause);
                        if (isExistOnDiskCache(key)) {
                            LOG.debug(key + " has cached on disk");
                            return;
                        }
                        this.getDiskCacheEntry(key, k -> DiskCacheEntry.newDiskCacheEntry(
                                ByteBufferInputStream.wrap(value.buffers), value.length, key));
                    })).build();

            loadMetadataDiskCache();
        }