Skip to content

feat: add graph data science (gds) plugin to neo4j deployment#55

Merged
colombod merged 1 commit into
mainfrom
feat/add-gds-plugin
Jul 11, 2026
Merged

feat: add graph data science (gds) plugin to neo4j deployment#55
colombod merged 1 commit into
mainfrom
feat/add-gds-plugin

Conversation

@bkrabach

Copy link
Copy Markdown
Collaborator

Summary

Add GDS Community 2.13.8 alongside existing APOC to match production configuration now deployed across both primary and secondary hosts. This brings the repository in line with actual deployed infrastructure — no configuration drift between repo definitions and running containers.

GDS (Graph Data Science) Community enables graph algorithms for analysis and pattern detection on Neo4j. The plugin versions are pinned to Neo4j's official compatibility matrix (GDS 2.13.8 with Neo4j 5.26.x).

What changed

  • docker-compose.yml: Added 'graph-data-science' to NEO4J_PLUGINS array; extended security.procedures.unrestricted to cover gds.* in addition to apoc.*
  • neo4j.Dockerfile: Added build-time download of GDS Community 2.13.8 jar, pinned to the official Neo4j 5.26.x compatibility matrix
  • docs/service-setup.md: Updated Docker Compose and docker run quickstarts to show APOC+GDS as default configuration; documented air-gap behavior for GDS (network required at container start for non-baked path, at build-time for Dockerfile-baked path)
  • test/airgap/verify-airgap-apoc.sh: Extended air-gap regression test to verify GDS jar is baked into the image layer alongside APOC; added GDS_VERSION env override for version flexibility

Test plan

  • Air-gap regression test suite: Full PASS, including new "GDS jar baked into image" check
  • GDS procedures callable: Verified GDS procedures (e.g., db.labels()) work correctly with widened security.procedures.unrestricted config
  • Docker Compose validation: Both compose YAML files parse cleanly with docker compose config (aside from expected pre-existing behavior on fresh checkout)
  • Production validation: In-place container rebuild on both primary (this machine) and secondary (spark-2) hosts completed with zero data loss and automatic server reconnection (no restart required)
    • This machine (ci-neo4j): 2,918,403 → 2,918,441 nodes (38 live writes during swap), 4,114,158 → 4,114,287 rels (129 live writes)
    • spark-2: 38,702 nodes, 58,873 rels (exact match, no data drift)
    • Both: Ports 7474/7687 unchanged, auth and mount points preserved

🤖 Generated with Amplifier

Add GDS Community 2.13.8 alongside existing APOC 5.26.22 to match the production
configuration now deployed across both primary and secondary hosts. GDS enables
graph algorithms for analysis and pattern detection.

Changes:
- docker-compose.yml: Add 'graph-data-science' to NEO4J_PLUGINS and extend
  security.procedures.unrestricted to cover gds.* in addition to apoc.*
- neo4j.Dockerfile: Add build-time download of GDS Community 2.13.8 jar,
  pinned to the official Neo4j 5.26.x compatibility matrix
- docs/service-setup.md: Update Docker Compose and docker run quickstarts to
  show APOC+GDS as default configuration; document air-gap behavior for GDS
  (network needed at container start for non-baked, at build-time for baked)
- test/airgap/verify-airgap-apoc.sh: Extend air-gap regression test to verify
  GDS jar is baked into the image layer alongside APOC; add GDS_VERSION env
  override

Verification: Full air-gap test suite pass, including new GDS baked-jar check,
confirmed GDS procedures callable on fully internal Docker network, and
docker compose config validation successful on both compose YAML files.
No data loss or connectivity interruption on either production host during
in-place container rebuild.

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
@colombod colombod merged commit dce76fa into main Jul 11, 2026
3 checks passed
@colombod colombod deleted the feat/add-gds-plugin branch July 11, 2026 17:35
colombod added a commit that referenced this pull request Jul 11, 2026
Surface the real fixes from PR #55 (feat: add graph data science plugin):

- Drop the wrong `dbms.security.procedures.allowlist=apoc.*,gds.*` from the
  bare-metal Neo4j VM config in azure-deployment.md — an allowlist restricted to
  the plugins would block the built-in db.*/dbms.* procedures the server needs.
  Set ONLY `unrestricted`.
- local-development.md docker run: add explicit
  `NEO4J_dbms_security_procedures_unrestricted='apoc.*,gds.*'` so GDS procedures
  load, pin the image to neo4j:5.26.22-community, and document that GDS is fetched
  at first start matched to the Neo4j version per the official compatibility
  matrix (GDS 2.13.x for Neo4j 5.26.x).

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
colombod added a commit that referenced this pull request Jul 11, 2026
Surface the real fixes from PR #55 (feat: add graph data science plugin):

- Drop the wrong `dbms.security.procedures.allowlist=apoc.*,gds.*` from the
  bare-metal Neo4j VM config in azure-deployment.md — an allowlist restricted to
  the plugins would block the built-in db.*/dbms.* procedures the server needs.
  Set ONLY `unrestricted`.
- local-development.md docker run: add explicit
  `NEO4J_dbms_security_procedures_unrestricted='apoc.*,gds.*'` so GDS procedures
  load, pin the image to neo4j:5.26.22-community, and document that GDS is fetched
  at first start matched to the Neo4j version per the official compatibility
  matrix (GDS 2.13.x for Neo4j 5.26.x).

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
colombod added a commit that referenced this pull request Jul 13, 2026
Surface the real fixes from PR #55 (feat: add graph data science plugin):

- Drop the wrong `dbms.security.procedures.allowlist=apoc.*,gds.*` from the
  bare-metal Neo4j VM config in azure-deployment.md — an allowlist restricted to
  the plugins would block the built-in db.*/dbms.* procedures the server needs.
  Set ONLY `unrestricted`.
- local-development.md docker run: add explicit
  `NEO4J_dbms_security_procedures_unrestricted='apoc.*,gds.*'` so GDS procedures
  load, pin the image to neo4j:5.26.22-community, and document that GDS is fetched
  at first start matched to the Neo4j version per the official compatibility
  matrix (GDS 2.13.x for Neo4j 5.26.x).

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants