Skip to content

[BUG] Clustered GraphDB: "Server files" import fails with multiple replicas due to leader re-election #192

@twagen24

Description

@twagen24

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

  1. Deploy GraphDB Enterprise on a Kubernetes cluster using this Helm chart.
  2. Set the number of replicas to 5 (replicas: 5) to enable clustered mode.
  3. Enable the import volume in values.yaml:
import:
  volumeMount:
    enabled: true
    volumeClaimTemplate:
      spec:
        accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 50Gi
  1. Install or upgrade the Helm release and wait until all 5 GraphDB pods are running.
  2. Upload a large RDF data file (e.g. several GB) to the directory /opt/graphdb/home/graphdb-import inside one of the pods.
  3. Start an import using the “Server files” import method via the GraphDB UI.
  4. Observe the import progress.
  5. Shortly before the import finishes, a new leader is elected in the cluster.
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions