Skip to content

Commit 33dbd4a

Browse files
authored
HDDS-11357. Datanode Usageinfo Support Display Pipeline. (apache#7105)
1 parent 9477aa6 commit 33dbd4a

5 files changed

Lines changed: 30 additions & 0 deletions

File tree

hadoop-hdds/interface-client/src/main/proto/hdds.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ message DatanodeUsageInfoProto {
191191
optional int64 containerCount = 5;
192192
optional int64 committed = 6;
193193
optional int64 freeSpaceToSpare = 7;
194+
optional int64 pipelineCount = 8;
194195
}
195196

196197
/**

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DatanodeUsageInfo.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class DatanodeUsageInfo {
3232
private DatanodeDetails datanodeDetails;
3333
private SCMNodeStat scmNodeStat;
3434
private int containerCount;
35+
private int pipelineCount;
3536

3637
/**
3738
* Constructs a DatanodeUsageInfo with DatanodeDetails and SCMNodeStat.
@@ -45,6 +46,7 @@ public DatanodeUsageInfo(
4546
this.datanodeDetails = datanodeDetails;
4647
this.scmNodeStat = scmNodeStat;
4748
this.containerCount = -1;
49+
this.pipelineCount = -1;
4850
}
4951

5052
/**
@@ -145,6 +147,14 @@ public void setContainerCount(int containerCount) {
145147
this.containerCount = containerCount;
146148
}
147149

150+
public int getPipelineCount() {
151+
return pipelineCount;
152+
}
153+
154+
public void setPipelineCount(int pipelineCount) {
155+
this.pipelineCount = pipelineCount;
156+
}
157+
148158
/**
149159
* Gets Comparator that compares two DatanodeUsageInfo on the basis of
150160
* their utilization values. Utilization is (capacity - remaining) divided
@@ -210,6 +220,7 @@ private DatanodeUsageInfoProto.Builder toProtoBuilder(int clientVersion) {
210220
}
211221

212222
builder.setContainerCount(containerCount);
223+
builder.setPipelineCount(pipelineCount);
213224
return builder;
214225
}
215226
}

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/SCMNodeManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,7 @@ public DatanodeUsageInfo getUsageInfo(DatanodeDetails dn) {
982982
DatanodeUsageInfo usageInfo = new DatanodeUsageInfo(dn, stat);
983983
try {
984984
usageInfo.setContainerCount(getContainerCount(dn));
985+
usageInfo.setPipelineCount(getPipeLineCount(dn));
985986
} catch (NodeNotFoundException ex) {
986987
LOG.error("Unknown datanode {}.", dn, ex);
987988
}
@@ -1610,6 +1611,11 @@ public int getContainerCount(DatanodeDetails datanodeDetails)
16101611
return nodeStateManager.getContainerCount(datanodeDetails.getUuid());
16111612
}
16121613

1614+
public int getPipeLineCount(DatanodeDetails datanodeDetails)
1615+
throws NodeNotFoundException {
1616+
return nodeStateManager.getPipelinesCount(datanodeDetails);
1617+
}
1618+
16131619
@Override
16141620
public void addDatanodeCommand(UUID dnId, SCMCommand command) {
16151621
writeLock().lock();

hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/UsageInfoSubcommand.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ private void printInfo(DatanodeUsage info) {
155155
+ " B", StringUtils.byteDesc(info.getRemaining()));
156156
System.out.printf("%-13s: %s %n", "Remaining %",
157157
PERCENT_FORMAT.format(info.getRemainingRatio()));
158+
System.out.printf("%-13s: %d %n", "Pipeline(s)",
159+
info.getPipelineCount());
158160
System.out.printf("%-13s: %d %n", "Container(s)",
159161
info.getContainerCount());
160162
System.out.printf("%-24s: %s (%s) %n", "Container Pre-allocated",
@@ -192,6 +194,7 @@ private static class DatanodeUsage {
192194
private long committed = 0;
193195
private long freeSpaceToSpare = 0;
194196
private long containerCount = 0;
197+
private long pipelineCount = 0;
195198

196199
DatanodeUsage(HddsProtos.DatanodeUsageInfoProto proto) {
197200
if (proto.hasNode()) {
@@ -212,6 +215,9 @@ private static class DatanodeUsage {
212215
if (proto.hasContainerCount()) {
213216
containerCount = proto.getContainerCount();
214217
}
218+
if (proto.hasPipelineCount()) {
219+
pipelineCount = proto.getPipelineCount();
220+
}
215221
if (proto.hasFreeSpaceToSpare()) {
216222
freeSpaceToSpare = proto.getFreeSpaceToSpare();
217223
}
@@ -277,5 +283,8 @@ public double getRemainingRatio() {
277283
return remaining / (double) capacity;
278284
}
279285

286+
public long getPipelineCount() {
287+
return pipelineCount;
288+
}
280289
}
281290
}

hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestUsageInfoSubcommand.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public void testCorrectJsonValuesInReport() throws IOException {
9494
assertEquals(80.00, json.get(0).get("remainingPercent").doubleValue(), 0.001);
9595

9696
assertEquals(5, json.get(0).get("containerCount").longValue());
97+
assertEquals(10, json.get(0).get("pipelineCount").longValue());
9798
}
9899

99100
@Test
@@ -122,6 +123,7 @@ public void testOutputDataFieldsAligning() throws IOException {
122123
assertThat(output).contains("Remaining :");
123124
assertThat(output).contains("Remaining % :");
124125
assertThat(output).contains("Container(s) :");
126+
assertThat(output).contains("Pipeline(s) :");
125127
assertThat(output).contains("Container Pre-allocated :");
126128
assertThat(output).contains("Remaining Allocatable :");
127129
assertThat(output).contains("Free Space To Spare :");
@@ -135,6 +137,7 @@ private List<HddsProtos.DatanodeUsageInfoProto> getUsageProto() {
135137
.setRemaining(80)
136138
.setUsed(10)
137139
.setContainerCount(5)
140+
.setPipelineCount(10)
138141
.build());
139142
return result;
140143
}

0 commit comments

Comments
 (0)