private void uploadRecoveredRecords(ObjectManager objectManager, LogCache.LogCacheBlock cacheBlock, Logger logger)
        throws InterruptedException, ExecutionException {
        if (cacheBlock.size() != 0) {
            logger.info("try recover from crash, recover records bytes size {}", cacheBlock.size());
            UploadWriteAheadLogTask task = newUploadWriteAheadLogTask(cacheBlock.records(), objectManager, Long.MAX_VALUE);
            task.prepare().thenCompose(nil -> task.upload()).thenCompose(nil -> task.commit()).get();
            releaseAllRecords(cacheBlock.records().values());
        }
    }
Recover WAL, upload WAL to S3 and close opening streams.
Note: {@link WriteAheadLog#start()} should be called before this method.
s3stream/src/main/java/com/automq/stream/s3/S3Storage.java