You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by lj...@apache.org on 2020/10/19 14:01:22 UTC
[hadoop-ozone] branch master updated: HDDS-4297. Allow multiple
transactions per container to be sent for deletion by SCM.
This is an automated email from the ASF dual-hosted git repository.
ljain pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 25e2046 HDDS-4297. Allow multiple transactions per container to be sent for deletion by SCM.
25e2046 is described below
commit 25e2046eefa9add8d5e5d45e39cbb188232b0fca
Author: Lokesh Jain <lj...@apache.org>
AuthorDate: Mon Sep 28 11:36:55 2020 +0530
HDDS-4297. Allow multiple transactions per container to be sent for deletion by SCM.
---
.../block/DatanodeDeletedBlockTransactions.java | 32 ++++++++--------------
.../hadoop/hdds/scm/block/TestDeletedBlockLog.java | 17 +++++-------
2 files changed, 18 insertions(+), 31 deletions(-)
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DatanodeDeletedBlockTransactions.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DatanodeDeletedBlockTransactions.java
index ce65a70..dca1529 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DatanodeDeletedBlockTransactions.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DatanodeDeletedBlockTransactions.java
@@ -82,30 +82,20 @@ public class DatanodeDeletedBlockTransactions {
}
private boolean addTransactionToDN(UUID dnID, DeletedBlocksTransaction tx) {
- if (transactions.containsKey(dnID)) {
- List<DeletedBlocksTransaction> txs = transactions.get(dnID);
- if (txs != null && txs.size() < maximumAllowedTXNum) {
- boolean hasContained = false;
- for (DeletedBlocksTransaction t : txs) {
- if (t.getContainerID() == tx.getContainerID()) {
- hasContained = true;
- break;
- }
- }
-
- if (!hasContained) {
- txs.add(tx);
- currentTXNum++;
- return true;
- }
- }
- } else {
+ List<DeletedBlocksTransaction> txs = transactions.get(dnID);
+ if (txs == null || txs.size() < maximumAllowedTXNum) {
currentTXNum++;
- transactions.put(dnID, tx);
+ if (txs == null) {
+ transactions.put(dnID, tx);
+ } else {
+ txs.add(tx);
+ }
+ if (SCMBlockDeletingService.LOG.isDebugEnabled()) {
+ SCMBlockDeletingService.LOG
+ .debug("Transaction added: {} <- TX({})", dnID, tx.getTxID());
+ }
return true;
}
- SCMBlockDeletingService.LOG
- .debug("Transaction added: {} <- TX({})", dnID, tx.getTxID());
return false;
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestDeletedBlockLog.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestDeletedBlockLog.java
index 75ad662..d4e2553 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestDeletedBlockLog.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestDeletedBlockLog.java
@@ -375,30 +375,27 @@ public class TestDeletedBlockLog {
transactions.getDatanodeTransactions(dnId1.getUuid()).size());
int size = transactions.getDatanodeTransactions(dnId2.getUuid()).size();
- // add duplicated container in dnID2, this should be failed.
+ // add two transactions for same container in dnID2
DeletedBlocksTransaction.Builder builder =
DeletedBlocksTransaction.newBuilder();
builder.setTxID(11);
builder.setContainerID(containerID);
builder.setCount(0);
- transactions.addTransaction(builder.build(),
- null);
+ Assert.assertTrue(transactions.addTransaction(builder.build(), null));
- // The number of TX in dnID2 should not be changed.
- Assert.assertEquals(size,
+ // Total number of transactions reaches the maximum value
+ Assert.assertEquals(size + 1,
transactions.getDatanodeTransactions(dnId2.getUuid()).size());
+ Assert.assertTrue(transactions.isFull());
- // Add new TX in dnID2, then dnID2 will reach maximum value.
containerID = RandomUtils.nextLong();
builder = DeletedBlocksTransaction.newBuilder();
builder.setTxID(12);
builder.setContainerID(containerID);
builder.setCount(0);
mockContainerInfo(containerID, dnId2);
- transactions.addTransaction(builder.build(),
- null);
- // Since all node are full, then transactions is full.
- Assert.assertTrue(transactions.isFull());
+ // No more txns can be added as maximum number of transactions are reached
+ Assert.assertFalse(transactions.addTransaction(builder.build(), null));
}
private void mockContainerInfo(long containerID, DatanodeDetails dd)
---------------------------------------------------------------------
To unsubscribe, e-mail: ozone-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: ozone-commits-help@hadoop.apache.org