[
https://issues.apache.org/jira/browse/HDFS-17001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17721184#comment-17721184
]
ASF GitHub Bot commented on HDFS-17001:
---------------------------------------
ayushtkn commented on code in PR #5628:
URL: https://github.com/apache/hadoop/pull/5628#discussion_r1189349033
##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java:
##########
@@ -725,4 +726,21 @@ public static Map<String, Object>
toJsonMap(BlockLocation[] locations)
m.put(BlockLocation.class.getSimpleName(), blockLocations);
return m;
}
+
+ public static String toJsonString(FsStatus status)
+ throws IOException {
+ return toJsonString(FsStatus.class, toJsonMap(status));
+ }
+
+ public static Map<String, Object> toJsonMap(FsStatus status)
+ throws IOException {
Review Comment:
this doesn't throw IOE, can be removed, once you remove it from here, I
think the throws IOE can be removed from the above method as well
##########
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java:
##########
@@ -2178,6 +2179,19 @@ HdfsFileStatus decodeResponse(Map<?, ?> json) {
return status.makeQualified(getUri(), f);
}
+ @Override
+ public FsStatus getStatus(Path f) throws IOException {
Review Comment:
nit:
change ``f`` to ``path``
##########
hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/WebHDFS.md:
##########
@@ -1190,6 +1191,28 @@ See also:
[FileSystem](../../api/org/apache/hadoop/fs/FileSystem.html).getLinkTa
See also:
[FileSystem](../../api/org/apache/hadoop/fs/FileSystem.html).getFileLinkInfo
+### Get Status
+
+* Submit a HTTP GET request.
+
+ curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETSTATUS"
+
+ The client receives a response with a [`FsStatus` JSON
object](#FsStatus_JSON_Schema):
+
+ HTTP/1.1 200 OK
+ Content-Type: application/json
+ Transfer-Encoding: chunked
+
+ {
+ "FsStatus": {
+ "used": 0,
+ "remaining": 0,
+ "capacity":0
+ }
Review Comment:
can you try it in an actual cluster, get a better example rather than having
all 0
##########
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java:
##########
@@ -2255,6 +2256,35 @@ public void testFileLinkStatus() throws Exception {
}
}
+ @Test
+ public void testFsStatus() throws Exception {
+ final Configuration conf = WebHdfsTestUtil.createConf();
+ try {
+ cluster = new MiniDFSCluster.Builder(conf)
+ .numDataNodes(1)
Review Comment:
datanodes are 1 by default, this line isn't required
##########
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java:
##########
@@ -1535,6 +1543,10 @@ public Void run() throws IOException {
};
}
+ private long getStateAtIndex(long[] states, int index) {
+ return states.length > index ? states[index] : -1;
+ }
Review Comment:
The same is defined in DfsClient, can we make the definition over there
``public static`` and use it here as well, rather than defining it twice?
##########
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java:
##########
@@ -2255,6 +2256,35 @@ public void testFileLinkStatus() throws Exception {
}
}
+ @Test
+ public void testFsStatus() throws Exception {
+ final Configuration conf = WebHdfsTestUtil.createConf();
+ try {
+ cluster = new MiniDFSCluster.Builder(conf)
+ .numDataNodes(1)
+ .build();
+ cluster.waitActive();
+
+ final WebHdfsFileSystem webHdfs =
+ WebHdfsTestUtil.getWebHdfsFileSystem(conf,
+ WebHdfsConstants.WEBHDFS_SCHEME);
+
+ final String path = "/foo";
+ OutputStream os = webHdfs.create(new Path(path));
+ os.write(new byte[1024]);
+
+ FsStatus fsStatus = webHdfs.getStatus(new Path("/"));
+ Assert.assertNotNull(fsStatus);
+
+ //used, free and capacity are non-negative longs
+ Assert.assertTrue(fsStatus.getUsed() >= 0);
+ Assert.assertTrue(fsStatus.getRemaining() >= 0);
+ Assert.assertTrue(fsStatus.getCapacity() >= 0);
Review Comment:
there is already a static import for these. No need of Assert. prefix.
Rather than just asserting they aren't 0, can you get the values from
DistributedFileSystem and validate that they are same
> Support getStatus API in WebHDFS
> --------------------------------
>
> Key: HDFS-17001
> URL: https://issues.apache.org/jira/browse/HDFS-17001
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: webhdfs
> Affects Versions: 3.4.0
> Reporter: Hualong Zhang
> Assignee: Hualong Zhang
> Priority: Major
> Labels: pull-request-available
> Attachments: image-2023-05-08-14-34-51-873.png
>
>
> WebHDFS should support getStatus:
> !image-2023-05-08-14-34-51-873.png!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]