Skip to content

memgraph

v3.12.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 11d NoSQL & Document
βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’

✓ No known CVEs patched in this version

Topics

ai ai-agents ai-memory context-graph cypher enterprise-context
+9 more
graph graph-algorithms graph-analysis graph-database graphrag kafka nosql opencypher streaming

Affected surfaces

auth rbac breaking_upgrade

ReleasePort's take

Moderate signal
editorial:auto 11d

Memgraph v3.12.0 removes the deprecated HA flags `--instance-down-timeout-sec` and `--instance-health-check-frequency-sec`; startup fails if they are set.

Why it matters: Removal of these HA flags triggers immediate startup failures; update configuration before upgrade to avoid service disruption.

Summary

AI summary

Broad release touches 🐞 Bug fixes, ✨ New features, πŸ› οΈ Improvements, and ⚠️ Breaking changes.

Changes in this release

Security Medium

Production Docker images now ship with supply chain attestations, SPDX SBOMs, and cosign signatures for verification.

Production Docker images now ship with supply chain attestations, SPDX SBOMs, and cosign signatures for verification.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Breaking High

Removed deprecated HA flags `--instance-down-timeout-sec` and `--instance-health-check-frequency-sec`. Startup fails if they are set.

Removed deprecated HA flags `--instance-down-timeout-sec` and `--instance-health-check-frequency-sec`. Startup fails if they are set.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Added property-based access control for nodes and relationships using `GRANT`, `DENY`, and `REVOKE` with a property list.

Added property-based access control for nodes and relationships using `GRANT`, `DENY`, and `REVOKE` with a property list.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Introduced opt‑in lightweight edges via `--storage-light-edge=true` reducing ~24β€―B memory per relationship.

Introduced opt‑in lightweight edges via `--storage-light-edge=true` reducing ~24β€―B memory per relationship.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Added `SUSPEND DATABASE` and `RESUME DATABASE` for multi‑tenant Enterprise deployments.

Added `SUSPEND DATABASE` and `RESUME DATABASE` for multi‑tenant Enterprise deployments.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

MAGE now available as prebuilt RPM packages for CentOSβ€―9 and CentOSβ€―10.

MAGE now available as prebuilt RPM packages for CentOSβ€―9 and CentOSβ€―10.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Added `text_search.fuzzy_phrase_search` and `text_search.fuzzy_phrase_search_edges` for typo‑tolerant phrase matching.

Added `text_search.fuzzy_phrase_search` and `text_search.fuzzy_phrase_search_edges` for typo‑tolerant phrase matching.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Added cluster‑wide coordinator read‑only setting synced across coordinators.

Added cluster‑wide coordinator read‑only setting synced across coordinators.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Feature Medium

Added `--storage-allow-recovery-failure` flag to start a broken database in a degraded state instead of crashing.

Added `--storage-allow-recovery-failure` flag to start a broken database in a degraded state instead of crashing.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Performance Medium

WAL files now protected with CRC32 checksums verified during recovery and replication.

WAL files now protected with CRC32 checksums verified during recovery and replication.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Performance Low

Text search and regex queries return results faster; regex top‑N stops once limit reached.

Text search and regex queries return results faster; regex top‑N stops once limit reached.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Performance Low

`MATCH (n) WHERE id(n) IN <list>` and label property `IN <list>` filters now use indexed scans when the list is a parameter or expression.

`MATCH (n) WHERE id(n) IN <list>` and label property `IN <list>` filters now use indexed scans when the list is a parameter or expression.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Performance Low

Label‑property indexes for one or two properties store entries inline, reducing memory overhead.

Label‑property indexes for one or two properties store entries inline, reducing memory overhead.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Performance Low

Reduced query overhead with property‑based access control by caching the auth checker per session and skipping checks when no restrictions apply.

Reduced query overhead with property‑based access control by caching the auth checker per session and skipping checks when no restrictions apply.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Performance Low

Edge property index scans now seek directly to lower bound instead of walking the entire skiplist for bounded lookups.

Edge property index scans now seek directly to lower bound instead of walking the entire skiplist for bounded lookups.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Performance Low

Track memory reclamation when jemalloc's dirty‑page decay returns pages to the OS, correcting reported vs actual memory usage.

Track memory reclamation when jemalloc's dirty‑page decay returns pages to the OS, correcting reported vs actual memory usage.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Medium

Fixed `replace()` infinite loop and OOM when the search string is empty.

Fixed `replace()` infinite loop and OOM when the search string is empty.

Source: llm_adapter@2026-07-15

Confidence: high

β€”
Bugfix Medium

Fixed user and role data corruption during rolling HA upgrades between Memgraph versions.

Fixed user and role data corruption during rolling HA upgrades between Memgraph versions.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Medium

Fixed rare server crash under heavy concurrent write load caused by heap‑use‑after‑free between transaction commit and storage GC.

Fixed rare server crash under heavy concurrent write load caused by heap‑use‑after‑free between transaction commit and storage GC.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Medium

Fixed planner bugs causing wrong or missing rows for edge `id(e) IN [...]`, duplicate‑containing `IN` lists, `ORDER BY` over unwind‑fed scans, nullable composite‑index ordering, and nested edge filters.

Fixed planner bugs causing wrong or missing rows for edge `id(e) IN [...]`, duplicate‑containing `IN` lists, `ORDER BY` over unwind‑fed scans, nullable composite‑index ordering, and nested edge filters.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed Bolt 4.4 clients receiving routing tables from data instances and incorrectly defaulting the target database.

Fixed Bolt 4.4 clients receiving routing tables from data instances and incorrectly defaulting the target database.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed duplicated coordinator entries in the routing table when re‑adding a leader coordinator.

Fixed duplicated coordinator entries in the routing table when re‑adding a leader coordinator.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed negative replication lag values causing invalid routing entries during coordinator re‑add or failover.

Fixed negative replication lag values causing invalid routing entries during coordinator re‑add or failover.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed MAIN instances hanging on shutdown while snapshot or WAL replication was still in progress.

Fixed MAIN instances hanging on shutdown while snapshot or WAL replication was still in progress.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed replication failures during WAL recovery when RPC messages were split across network reads.

Fixed replication failures during WAL recovery when RPC messages were split across network reads.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Bugfix Low

Fixed snapshot and WAL transfer files not being cleaned up when final RPC response fails to send; they are now moved to `.old` directory.

Fixed snapshot and WAL transfer files not being cleaned up when final RPC response fails to send; they are now moved to `.old` directory.

Source: granite4.1:30b@2026-07-15-audit

Confidence: high

β€”
Full changelog

Memgraph v3.12.0 - July 15th, 2026

⚠️ Breaking changes

  • The deprecated high availability startup flags --instance-down-timeout-sec and --instance-health-check-frequency-sec have been removed after two release cycles. They were deprecated in 3.10 and ignored since then, but startup now fails if either flag is still set. Remove them from coordinator configs and use SET COORDINATOR SETTING 'instance_down_timeout_sec' TO '<value>' and SET COORDINATOR SETTING 'instance_health_check_frequency_sec' TO '<value>' instead. Values previously passed via the flags are not migrated automatically β€” re-apply any non-default settings after upgrade. #4310

✨ New features

  • Added property-based access control for nodes and relationships. GRANT, DENY, and REVOKE now accept a property list ({prop, ...} or {*} for all properties) alongside existing label and permission rules, so you can restrict which properties a user or role can read or write on matching nodes. #4156
  • Added opt-in lightweight edges via --storage-light-edge=true to cut roughly 24B of memory overhead per relationship when you need properties on edges. Edges are pool-allocated instead of stored in a dedicated skip list container, while traversals and pattern matching behave as before. Enable --storage-enable-edges-metadata=true if your workload resolves edges by internal ID. #4228
  • Added SUSPEND DATABASE and RESUME DATABASE for multi-tenant Enterprise deployments. Suspend tears down a tenant's in-memory storage to a durable COLD shell to free RAM while keeping its data on disk; resume rebuilds it HOT with all data intact. Operations replicate across the cluster like CREATE/DROP DATABASE. #4280
  • MAGE is now available as prebuilt RPM packages on CentOS 9 and CentOS 10, so you can install the graph algorithm library with your package manager instead of building from source. Install the matching memgraph package first, then the memgraph-mage RPM. #4289
  • Added text_search.fuzzy_phrase_search and text_search.fuzzy_phrase_search_edges for typo-tolerant phrase matching on a single property. Queries use data.<property>:<terms> with ordered, adjacent terms and prefix matching on the last term, so data.title:big bad wo can match big bad wolf or big bad world when fuzzy_distance allows a few edits across the phrase. #4304
  • Added a cluster-wide coordinator read-only setting synced across coordinators, so operators can enable global read-only mode from any coordinator in the cluster. #4330
  • Added the --storage-allow-recovery-failure flag (default false) so an in-memory database that fails durability recovery on startup comes up in a broken state instead of crashing the whole process. A broken database is empty, leaves its on-disk files untouched, and rejects data queries; healthy databases keep working. Health is reported via a new Health column in SHOW DATABASES and a health row in SHOW STORAGE INFO. Recover a broken database in place with RECOVER SNAPSHOT, restore the data directory from a backup, or drop it; on a cluster, a broken replica database self-heals from the main while a broken main stays main (no automatic failover). #4284

πŸ› οΈ Improvements

  • WAL files are now protected with CRC32 checksums. The WAL header and each transaction carry their own checksum, which is verified during recovery and on replicas before the data is applied, so silent on-disk corruption is detected instead of being recovered. WAL files written by older versions remain recoverable without verification. #4225
  • Text search and regex queries return results faster, especially regex searches with large match sets. Regex top-N queries now stop once the configured limit is reached instead of scanning every match, so broad patterns on large indexes complete much sooner. #4286
  • MATCH (n) WHERE id(n) IN <list> and label property IN <list> filters now use indexed scans when the list is a parameter or expression, instead of scanning the full graph. Bulk id lookups and parameterized membership filters run much faster on large databases. #4299
  • Label-property indexes for one or two properties now store entries inline instead of allocating a separate heap buffer per entry, reducing memory overhead for the most common index configurations. #4308
  • Reduced query overhead when property-based access control is enabled by caching the fine-grained auth checker per session and skipping property permission checks when no property-level restrictions apply. #4309
  • Production Docker images now ship with supply chain attestations and SPDX SBOMs, signed with cosign. You can verify image signatures and retrieve the SBOM for installed images to support security auditing and compliance workflows. #4337

🐞 Bug fixes

  • Fixed replace() causing an infinite loop and OOM when the search string is empty. Empty search now inserts the replacement at every character boundary with bounded allocation, so queries such as replace("abc", "", "-") return "-a-b-c-" instead of crashing the server. #4269
  • Fixed Bolt 4.4 clients receiving routing tables from data instances and incorrectly defaulting the target database. Data instances now reject routing requests, and database selection over Bolt 4.4 works as expected. #4270
  • Fixed user and role data being corrupted during rolling HA upgrades between Memgraph versions. Auth entities now carry a version field and are migrated on deserialize, so fine-grained access grants replicated from an older MAIN are preserved after failover to an upgraded REPLICA. #4301
  • Fixed duplicated coordinator entries in the routing table when re-adding a coordinator that was the current leader. #4311
  • Fixed negative replication lag values in the routing table that could produce invalid routing entries when re-adding a coordinator or during failover. #4312
  • Fixed MAIN instances hanging on shutdown while snapshot or WAL replication is still in progress. Shutdown now aborts the replication client so the instance stops immediately instead of waiting for replication to finish. #4314
  • Fixed replication failures during WAL recovery when file-bearing RPC messages were split across network reads. Consumed message data is now dropped from the buffer so files are not parsed twice. #4317
  • Fixed a rare server crash under heavy concurrent write load caused by a heap-use-after-free between transaction commit and storage garbage collection. Committed deltas are now registered before the commit is marked finished, so fast-discard and GC no longer free memory still referenced by in-flight transactions. #4323
  • Fixed edge property index scans scaling linearly with index size for bounded lookups. Scans now seek directly to the lower bound instead of walking from the head of the skiplist. #4326
  • Fixed several planner bugs that caused wrong or missing rows for edge id(e) IN [...], edge property IN lists with duplicates, ORDER BY over unwind-fed index scans, composite-index nullable ordering, and nested edge property filters. #4336
  • Fixed snapshot and WAL transfer files not being cleaned up when the final RPC response fails to send. Files are now moved to the .old directory regardless of send success, preventing orphaned durability files on replicas. #4347
  • Track memory reclamation when jemalloc's background dirty-page decay returns pages to the OS. This caused reported memory usage to exceed actual memory usage. #4396

Breaking Changes

  • Removed deprecated high‑availability startup flags `--instance-down-timeout-sec` and `--instance-health-check-frequency-sec`; coordinator configs must use `SET COORDINATOR SETTING` equivalents instead.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track memgraph

Get notified when new releases ship.

Sign up free

About memgraph

High-performance open-source in-memory graph database for GraphRAG, AI memory, agentic AI, and real-time graph analytics. Cypher-compatible, built in C++.

All releases β†’

Related context

Earlier breaking changes

  • v3.10.0 'SHOW STORAGE INFO' renames three fields and adds one new field; update tooling accordingly.
  • v3.10.0 Fine-grained permissions now support explicit DENY semantics, overriding GRANT.
  • v3.10.0 Coordinators ignore periodic storage snapshots and reject --init-file/--init-data-file on HA join.

Beta — feedback welcome: [email protected]