This is an automated email from the ASF dual-hosted git repository.
jerryshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new e20fc225ac [#12592] improvement: Deprecate the filesystem-fuse module
(#12596)
e20fc225ac is described below
commit e20fc225ac8c2803ab599498268ba4114587ba2a
Author: Jerry Shao <[email protected]>
AuthorDate: Wed Aug 26 16:01:26 2026 +0800
[#12592] improvement: Deprecate the filesystem-fuse module (#12596)
### What changes were proposed in this pull request?
- Removed `clients:filesystem-fuse` from the Gradle build: dropped the
`enableFuse`-gated `include` in `settings.gradle.kts` and the now-unused
`enableFuse` property in `gradle.properties`. The module can no longer
be built, including via `-PenableFuse=true`.
- Removed `.github/workflows/gvfs-fuse-build-test.yml`, which built the
module and would no longer work.
- Added a deprecation notice to `clients/filesystem-fuse/README.md`
pointing users to the Java/Python GVFS implementations.
- Added a deprecation note to `docs/filesets.md` where the FUSE
implementation is mentioned.
- Source code under `clients/filesystem-fuse` is left in place for
reference; no functional/runtime changes.
### Why are the changes needed?
The Gvfs-fuse module is unmaintained. It was previously an opt-in,
rarely-exercised module; this formally deprecates it, stops building it,
and documents its status for users who may still reference it.
Fix: #12592
### Does this PR introduce any user-facing change?
Yes — `clients:filesystem-fuse` is no longer buildable (the `enableFuse`
Gradle property is removed), and its README/the `filesets.md` doc now
state it is deprecated and unsupported.
### How was this patch tested?
- `./gradlew projects` confirms the module no longer appears in the
build.
- Docs-only and build-config changes; no test suite changes needed since
no runtime behavior changed.
---
.github/workflows/gvfs-fuse-build-test.yml | 101 -----------------------------
clients/filesystem-fuse/README.md | 5 ++
docs/filesets.md | 5 ++
gradle.properties | 3 -
settings.gradle.kts | 7 +-
5 files changed, 12 insertions(+), 109 deletions(-)
diff --git a/.github/workflows/gvfs-fuse-build-test.yml
b/.github/workflows/gvfs-fuse-build-test.yml
deleted file mode 100644
index 77b3419587..0000000000
--- a/.github/workflows/gvfs-fuse-build-test.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-name: Build gvfs-fuse and testing
-
-# Controls when the workflow will run
-on:
- # Temporarily disable
- # push:
- # branches: [ "main", "branch-*" ]
- # pull_request:
- # branches: [ "main", "branch-*" ]
- workflow_dispatch:
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.number ||
github.ref }}
- cancel-in-progress: true
-
-jobs:
- changes:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Disable Git automatic maintenance
- run: git config --local maintenance.auto false
- - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d
- id: filter
- with:
- filters: |
- source_changes:
- - .github/**
- - api/**
- - bin/**
- - catalogs/hadoop/**
- - clients/filesystem-fuse/**
- - common/**
- - conf/**
- - core/**
- - dev/**
- - gradle/**
- - meta/**
- - scripts/**
- - server/**
- - server-common/**
- - build.gradle.kts
- - gradle.properties
- - gradlew
- - settings.gradle.kts
- outputs:
- source_changes: ${{ steps.filter.outputs.source_changes }}
-
- # Build for AMD64 architecture
- Gvfs-Build:
- needs: changes
- if: needs.changes.outputs.source_changes == 'true'
- runs-on: ubuntu-latest
- timeout-minutes: 60
- strategy:
- matrix:
- architecture: [linux/amd64]
- java-version: [ 17 ]
- env:
- PLATFORM: ${{ matrix.architecture }}
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-java@v4
- with:
- java-version: ${{ matrix.java-version }}
- distribution: 'temurin'
- cache: 'gradle'
-
- - name: Set up QEMU
- uses:
docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
-
- - name: Check required command
- run: |
- dev/ci/check_commands.sh
-
- - name: Build Gvfs-fuse
- run: |
- ./gradlew :clients:filesystem-fuse:build -PenableFuse=true
-
- - name: Integration test
- run: |
- ./gradlew build -PskipWeb=true -x :clients:client-python:build -x
test -x web -PskipTrinoConnector=true
- ./gradlew compileDistribution -PskipWeb=true -x
:clients:client-python:build -x test -x web -PskipTrinoConnector=true
- cd clients/filesystem-fuse
- make test-s3
- make test-fuse-it
-
- - name: Free up disk space
- run: |
- dev/ci/util_free_space.sh
-
- - name: Upload tests reports
- uses: actions/upload-artifact@v7
- if: ${{ (failure() && steps.integrationTest.outcome == 'failure') ||
contains(github.event.pull_request.labels.*.name, 'upload log') }}
- with:
- name: Gvfs-fuse integrate-test-reports-${{ matrix.java-version }}
- path: |
- clients/filesystem-fuse/target/debug/fuse.log
- distribution/package/logs/gravitino-server.out
- distribution/package/logs/gravitino-server.log
diff --git a/clients/filesystem-fuse/README.md
b/clients/filesystem-fuse/README.md
index c95e6b78c3..38cb27e5b8 100644
--- a/clients/filesystem-fuse/README.md
+++ b/clients/filesystem-fuse/README.md
@@ -19,6 +19,11 @@
# Gvfs-fuse
+> **Deprecated:** Gvfs-fuse is deprecated and is no longer part of the Gradle
build (it is not
+> included in `settings.gradle.kts` and cannot be built via
`-PenableFuse=true`). The source is
+> kept in the repository for reference only and receives no further
development or support. Use
+> the Java or Python GVFS implementations instead; see
[Filesets](../../docs/filesets.md).
+
Gvfs-fuse is the Fuse client for Gravitino fileset. It allows users to mount
Gravitino filesets to their local file system via Fuse, enabling access to
Gravitino fileset files as if they were part of the local file system.
## Features
diff --git a/docs/filesets.md b/docs/filesets.md
index 06b52929d7..3b2d92eb5e 100644
--- a/docs/filesets.md
+++ b/docs/filesets.md
@@ -25,6 +25,11 @@ interface, so anything that already speaks HDFS paths works,
and it requires Had
The Python one is built on fsspec, so it works with pandas, PyArrow, and
anything else in that
ecosystem. There is also a FUSE implementation for mounting a fileset as a
local directory.
+:::note
+The FUSE implementation (`gvfs-fuse`) is deprecated. It is excluded from the
Gradle build and
+receives no further development or support; use the Java or Python GVFS
implementation instead.
+:::
+
Credentials are the other half of it. A caller reaching storage through GVFS
can be given
short-lived credentials vended by Gravitino rather than holding long-lived
cloud keys of its own,
which is what makes the indirection a governance boundary rather than only a
convenience. See
diff --git a/gradle.properties b/gradle.properties
index 23236d74f9..0cfefe5ab5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -44,8 +44,5 @@ pythonVersion = 3.12
# skipDockerTests is used to skip the tests that require Docker to be running.
skipDockerTests = true
-# enableFuse is used to enable the fuse module in the build.
-enableFuse = false
-
# The minimum supported Trino version.
minSupportedTrinoVersion= 435
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 3f9ec2f06a..deadd2e8d3 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -59,11 +59,8 @@ include(
"clients:client-python",
"clients:cli"
)
-if (gradle.startParameter.projectProperties["enableFuse"]?.toBoolean() ==
true) {
- include("clients:filesystem-fuse")
-} else {
- println("Skipping filesystem-fuse module since enableFuse is set to false")
-}
+// clients:filesystem-fuse is deprecated and excluded from the build. The
source is kept
+// in-tree for reference; see clients/filesystem-fuse/README.md for details.
include("iceberg:iceberg-common")
include("iceberg:iceberg-rest-server")
include("iceberg:iceberg-rest-trino-it")