-
Notifications
You must be signed in to change notification settings - Fork 23
Description
Is there an existing issue for this?
- I have searched the existing issues
Affected Version
12.2.0
Current Behavior
When deploying GraphDB Enterprise on a Kubernetes cluster using this Helm chart with replicas: 5, each GraphDB pod has its own local filesystem.
The import method "Server files", which requires uploading files to
/opt/graphdb/home/graphdb-import, works correctly when running a single pod (replicas = 1).
However, in a clustered setup (replicas = 5):
- The import directory exists separately in each pod
- Large RDF imports started via "Server files" fail
- Shortly before the import finishes, GraphDB elects a new "Leader node"
- The leader change interrupts and breaks the import process
Even when enabling the import volume via the Helm chart (import.volumeMount.enabled: true), the problem persists.
Expected Behavior
When running GraphDB Enterprise in a Kubernetes cluster:
- The "Server files" import method should work reliably in clustered mode
- All GraphDB pods should have consistent access to the same import files
- The import process should not fail due to leader re-election
- Large imports should complete successfully without manual workarounds
Ideally, the Helm chart and/or documentation should clearly support and document how server file imports are expected to work in a multi-pod (replicated) setup, including proper shared storage semantics.
Steps To Reproduce
- Deploy GraphDB Enterprise on a Kubernetes cluster using this Helm chart.
- Set the number of replicas to 5 (
replicas: 5) to enable clustered mode. - Enable the import volume in values.yaml:
import:
volumeMount:
enabled: true
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
- Install or upgrade the Helm release and wait until all 5 GraphDB pods are running.
- Upload a large RDF data file (e.g. several GB) to the directory
/opt/graphdb/home/graphdb-importinside one of the pods. - Start an import using the “Server files” import method via the GraphDB UI.
- Observe the import progress.
- Shortly before the import finishes, a new leader is elected in the cluster.
- The import process fails or is interrupted due to the leader change.
Anything else?
I've also raised this question on Stack Overflow: https://stackoverflow.com/questions/79853553/uploading-large-files-to-graphdb-cluster