From 9542e43d8bdd1feaa107fc4149544001f36eb4e1 Mon Sep 17 00:00:00 2001 From: guohao1 Date: Thu, 6 Jul 2023 14:32:05 +0800 Subject: [PATCH 1/2] HDDS-8978. Deadlock in scm SequenceIdGenerator --- .../apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java index 02b9565dd79..d904399a9f5 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java @@ -161,13 +161,17 @@ public long getNextId(String sequenceIdName) throws SCMException { public void invalidateBatch() { lock.lock(); try { - sequenceIdToBatchMap.forEach( - (sequenceId, batch) -> batch.nextId = batch.lastId + 1); + invalidateBatchInternal(); } finally { lock.unlock(); } } + private void invalidateBatchInternal() { + sequenceIdToBatchMap + .forEach((sequenceId, batch) -> batch.nextId = batch.lastId + 1); + } + /** * Reinitialize the SequenceIdGenerator with the latest sequenceIdTable * during SCM reload. @@ -177,7 +181,7 @@ public void reinitialize(Table sequenceIdTable) lock.lock(); try { LOG.info("reinitialize SequenceIdGenerator."); - invalidateBatch(); + invalidateBatchInternal(); stateManager.reinitialize(sequenceIdTable); } finally { lock.unlock(); From 21c3195db20ce35331df556a174fe31d35c8be42 Mon Sep 17 00:00:00 2001 From: guohao1 Date: Wed, 19 Jul 2023 20:52:56 +0800 Subject: [PATCH 2/2] change log --- .../java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java index d904399a9f5..4e72376f858 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java @@ -178,9 +178,9 @@ private void invalidateBatchInternal() { */ public void reinitialize(Table sequenceIdTable) throws IOException { + LOG.info("reinitialize SequenceIdGenerator."); lock.lock(); try { - LOG.info("reinitialize SequenceIdGenerator."); invalidateBatchInternal(); stateManager.reinitialize(sequenceIdTable); } finally {