Skip to content

HDFS-17923. WebUI file explorer: Trash support, upload progress, rename, and UX improvements#8508

Open
magnuma3 wants to merge 1 commit into
apache:trunkfrom
magnuma3:file-explorer-enhancements
Open

HDFS-17923. WebUI file explorer: Trash support, upload progress, rename, and UX improvements#8508
magnuma3 wants to merge 1 commit into
apache:trunkfrom
magnuma3:file-explorer-enhancements

Conversation

@magnuma3
Copy link
Copy Markdown

@magnuma3 magnuma3 commented May 22, 2026

Description of PR

HDFS-17923

The WebUI file explorer (/explorer.html) is the main entry point of HDFS for
many users in our environment. Most of them access HDFS through browser
behind Knox gateway, not by hdfs CLI. But current file explorer is missing
some basic features that users expect from a file manager today.

We have run patched version of file explorer on our internal 3.1.2 fork for
more than 2 year. It serves daily user traffic without big issue. We want to
contribute the general part to upstream as one patch.

Adds the following to /explorer.html:

  • Open at user's home directory (from WebHDFS GETHOMEDIRECTORY) instead of /.
  • Keep current path across login redirect via new ?p=<urlencoded-path> query.
  • Show current nameservice name next to the directory input.
  • Upload progress bar with percent and elapsed time (per file for multi-file upload).
  • Success message in info panel after mkdir / upload.
  • Trash support: delete now moves the target to
    <homedir>/.Trash/Current/<path> using op=RENAME&renameoptions=TO_TRASH
    instead of op=DELETE&recursive=true. Two guards reject moving a path
    that is already inside Trash, or that contains Trash root. Destination
    name collision is handled by .1, .2 suffix.
  • Direct delete button is removed in this patch.
  • Rename file/directory via op=RENAME.
  • Show access time next to modification time.
  • Submit create-dir and rename input on Enter key.
  • "Copy" button to copy fully-qualified hdfs://<ns><path> to clipboard.

Original UI

image

Enhanced UI

image
  • Upload progress bar
image
  • Trash
image image

How was this patch tested?

manual smoke on a running NameNode

For code changes:

  • Does the title or this PR starts with the corresponding JIRA issue id (e.g. 'HADOOP-17799. Your PR title ...')?
  • Object storage: have the integration tests been executed and the endpoint declared according to the connector-specific documentation?
  • If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
  • If applicable, have you updated the LICENSE, LICENSE-binary, NOTICE-binary files?

AI Tooling

If an AI tool was used:

@hadoop-yetus
Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 18m 13s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 jshint 0m 0s jshint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ trunk Compile Tests _
-1 ❌ mvninstall 51m 5s /branch-mvninstall-root.txt root in trunk failed.
+1 💚 shadedclient 84m 6s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 1m 22s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 shadedclient 32m 21s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 asflicense 0m 35s The patch does not generate ASF License warnings.
138m 21s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/1/artifact/out/Dockerfile
GITHUB PR #8508
Optional Tests dupname asflicense shadedclient codespell detsecrets xmllint jshint
uname Linux 403fbbc1aaee 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 5147b19
Max. process+thread count 576 (vs. ulimit of 10000)
modules C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/1/console
versions git=2.43.0 maven=3.9.15
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@magnuma3 magnuma3 force-pushed the file-explorer-enhancements branch from 1cae069 to 85cbd78 Compare May 26, 2026 02:50
@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 6m 35s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 jshint 0m 0s jshint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ trunk Compile Tests _
+1 💚 mvninstall 25m 36s trunk passed
+1 💚 shadedclient 41m 28s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 47s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 shadedclient 15m 7s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 asflicense 0m 23s The patch does not generate ASF License warnings.
65m 23s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/3/artifact/out/Dockerfile
GITHUB PR #8508
Optional Tests dupname asflicense shadedclient codespell detsecrets xmllint jshint
uname Linux 09439704a94a 5.15.0-171-generic #181-Ubuntu SMP Fri Feb 6 22:44:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 85cbd78
Max. process+thread count 615 (vs. ulimit of 10000)
modules C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/3/console
versions git=2.43.0 maven=3.9.15
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link
Copy Markdown

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 54s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 xmllint 0m 0s xmllint was not available.
+0 🆗 jshint 0m 0s jshint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ trunk Compile Tests _
+1 💚 mvninstall 47m 28s trunk passed
+1 💚 shadedclient 81m 38s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 1m 25s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 shadedclient 33m 52s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 asflicense 0m 36s The patch does not generate ASF License warnings.
120m 12s
Subsystem Report/Notes
Docker ClientAPI=1.54 ServerAPI=1.54 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/2/artifact/out/Dockerfile
GITHUB PR #8508
Optional Tests dupname asflicense shadedclient codespell detsecrets xmllint jshint
uname Linux 5f5eea9cbf8c 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 1cae069
Max. process+thread count 642 (vs. ulimit of 10000)
modules C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8508/2/console
versions git=2.43.0 maven=3.9.15
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants