This is an automated email from the ASF dual-hosted git repository.
sammichen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 23e350b238 HDDS-10869. SCMNodeManager#getUsageInfo memory occupancy
optimization (#6737)
23e350b238 is described below
commit 23e350b2385014fa15a02a9ff7c359a5f15ae5e9
Author: hao guo <[email protected]>
AuthorDate: Thu Jun 6 11:01:30 2024 +0800
HDDS-10869. SCMNodeManager#getUsageInfo memory occupancy optimization
(#6737)
---
.../java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java | 5 +++++
.../java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java | 8 ++++++--
.../org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java | 10 ++++++++++
.../java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java | 4 +---
4 files changed, 22 insertions(+), 5 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
index 4543a49b41..3307a292dc 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
@@ -682,6 +682,11 @@ public class NodeStateManager implements Runnable,
Closeable {
return nodeStateMap.getContainers(uuid);
}
+ public int getContainerCount(UUID uuid)
+ throws NodeNotFoundException {
+ return nodeStateMap.getContainerCount(uuid);
+ }
+
/**
* Move Stale or Dead node to healthy if we got a heartbeat from them.
* Move healthy nodes to stale nodes if it is needed.
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java
index 3790214f52..818e182632 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java
@@ -980,8 +980,7 @@ public class SCMNodeManager implements NodeManager {
SCMNodeStat stat = getNodeStatInternal(dn);
DatanodeUsageInfo usageInfo = new DatanodeUsageInfo(dn, stat);
try {
- int containerCount = getContainers(dn).size();
- usageInfo.setContainerCount(containerCount);
+ usageInfo.setContainerCount(getContainerCount(dn));
} catch (NodeNotFoundException ex) {
LOG.error("Unknown datanode {}.", dn, ex);
}
@@ -1458,6 +1457,11 @@ public class SCMNodeManager implements NodeManager {
return nodeStateManager.getContainers(datanodeDetails.getUuid());
}
+ public int getContainerCount(DatanodeDetails datanodeDetails)
+ throws NodeNotFoundException {
+ return nodeStateManager.getContainerCount(datanodeDetails.getUuid());
+ }
+
@Override
public void addDatanodeCommand(UUID dnId, SCMCommand command) {
writeLock().lock();
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
index e8843fa21e..1dcdc17c90 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
@@ -378,6 +378,16 @@ public class NodeStateMap {
}
}
+ public int getContainerCount(UUID uuid) throws NodeNotFoundException {
+ lock.readLock().lock();
+ try {
+ checkIfNodeExist(uuid);
+ return nodeToContainer.get(uuid).size();
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
public void removeContainer(UUID uuid, ContainerID containerID) throws
NodeNotFoundException {
lock.writeLock().lock();
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java
index a0bcfd3025..478b92fa81 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java
@@ -152,9 +152,7 @@ public class NodeEndpoint {
}
});
try {
- Set<ContainerID> allContainers = nodeManager.getContainers(datanode);
-
- builder.withContainers(allContainers.size());
+ builder.withContainers(nodeManager.getContainerCount(datanode));
builder.withOpenContainers(openContainers.get());
} catch (NodeNotFoundException ex) {
LOG.warn("Cannot get containers, datanode {} not found.",
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]