From 4cafe3855c71648e52994a43465fd11b70e17b4f Mon Sep 17 00:00:00 2001 From: dengchao <2326884052@qq.com> Date: Fri, 13 Sep 2024 16:07:31 +0800 Subject: [PATCH] move newDigest to MD5Hash --- .../src/main/java/org/apache/ratis/io/MD5Hash.java | 8 +++++--- .../apache/ratis/server/storage/SnapshotManager.java | 10 +--------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/ratis-common/src/main/java/org/apache/ratis/io/MD5Hash.java b/ratis-common/src/main/java/org/apache/ratis/io/MD5Hash.java index e60bef9652..0d19feb938 100644 --- a/ratis-common/src/main/java/org/apache/ratis/io/MD5Hash.java +++ b/ratis-common/src/main/java/org/apache/ratis/io/MD5Hash.java @@ -30,13 +30,15 @@ public class MD5Hash { public static final int MD5_LEN = 16; private static final ThreadLocal DIGESTER_FACTORY = - ThreadLocal.withInitial(() -> { + ThreadLocal.withInitial(MD5Hash::newDigester); + + public static MessageDigest newDigester() { try { return MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); + throw new IllegalStateException("Failed to create MessageDigest for MD5", e); } - }); + } private byte[] digest; diff --git a/ratis-server/src/main/java/org/apache/ratis/server/storage/SnapshotManager.java b/ratis-server/src/main/java/org/apache/ratis/server/storage/SnapshotManager.java index 093eacf16b..4b6687b057 100644 --- a/ratis-server/src/main/java/org/apache/ratis/server/storage/SnapshotManager.java +++ b/ratis-server/src/main/java/org/apache/ratis/server/storage/SnapshotManager.java @@ -89,7 +89,7 @@ private FileChannel open(FileChunkProto chunk, File tmpSnapshotFile) throws IOEx } // create the temp snapshot file and put padding inside out = FileUtils.newFileChannel(tmpSnapshotFile, StandardOpenOption.WRITE, StandardOpenOption.CREATE); - renewMd5Digest(); + digester = MD5Hash.newDigester(); } else { if (!exists) { throw new FileNotFoundException("Chunk offset is non-zero but file is not found: " + tmpSnapshotFile @@ -172,14 +172,6 @@ public void installSnapshot(InstallSnapshotRequestProto request, StateMachine st } } - private void renewMd5Digest() throws IOException { - try { - digester = MessageDigest.getInstance("MD5"); - } catch (NoSuchAlgorithmException e) { - throw new IOException("could not find MD5 digest algorithm"); - } - } - private static void rename(File tmpDir, File stateMachineDir) throws IOException { LOG.info("Installed snapshot, renaming temporary dir {} to {}", tmpDir, stateMachineDir);