This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+9 more
Affected surfaces
ReleasePort's take
Moderate signalMemgraph 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 summaryBroad release touches π Bug fixes, β¨ New features, π οΈ Improvements, and β οΈ Breaking changes.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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-secand--instance-health-check-frequency-sechave 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 useSET COORDINATOR SETTING 'instance_down_timeout_sec' TO '<value>'andSET 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, andREVOKEnow 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=trueto 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=trueif your workload resolves edges by internal ID. #4228 - Added
SUSPEND DATABASEandRESUME DATABASEfor 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 likeCREATE/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
memgraphpackage first, then thememgraph-mageRPM. #4289 - Added
text_search.fuzzy_phrase_searchandtext_search.fuzzy_phrase_search_edgesfor typo-tolerant phrase matching on a single property. Queries usedata.<property>:<terms>with ordered, adjacent terms and prefix matching on the last term, sodata.title:big bad wocan matchbig bad wolforbig bad worldwhenfuzzy_distanceallows 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-failureflag (defaultfalse) so an in-memory database that fails durability recovery on startup comes up in abrokenstate 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 newHealthcolumn inSHOW DATABASESand ahealthrow inSHOW STORAGE INFO. Recover a broken database in place withRECOVER 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 propertyIN <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 asreplace("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 propertyINlists with duplicates,ORDER BYover 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
.olddirectory 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
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++.
Related context
Related tools
Earlier breaking changes
Beta — feedback welcome: [email protected]