Skip to content

feat(dbms): close idle sessions that keep a FORCE-dropped database pinned - #1831

Merged
vpavicic merged 3 commits into
release/3.14from
docs/4583-final
Oct 20, 2026
Merged

vpavicic merged 3 commits into
release/3.14from
docs/4583-final

Conversation

@katarinasupe

@katarinasupe katarinasupe commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Description

The "DROP DATABASE with FORCE" section now says that Memgraph closes the sessions still using a database being force-dropped, and what an idle session, a session sending a query and a session in an open transaction see.

Product PR

memgraph/memgraph#4843

Checklist

  • For a product change: milestone set to the release and feature or bugfix label added
  • For a product change: this PR is linked from the product PR's documentation checklist

Checked on the 20261011 daily build (c829e614, includes the merge) with an Enterprise license: a session that named the database when connecting, one that switched with USE DATABASE, and one in an open transaction. No new cypher examples.

Not confirmed:

  • On REPLICA instances (from the release note and the replication e2e test; not run).
  • The release note says a USE DATABASE session "keeps its connection". In the run it was closed like the others, and the driver reconnected.

@katarinasupe katarinasupe added this to the 3.14 milestone Oct 12, 2026
@katarinasupe katarinasupe added the feature Documentation related to a new product feature of feature update label Oct 12, 2026
@katarinasupe katarinasupe self-assigned this Oct 12, 2026
@vercel

vercel Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
documentation Ready Ready Preview Oct 20, 2026 11:39am UTC

Request Review

@katarinasupe

Copy link
Copy Markdown
Contributor Author

@andrejtonev please check the 'Not confirmed' part in the PR description.

@andrejtonev andrejtonev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, the new subsection is the right place for this. I ran each case on 3.14.0-rc3 (Enterprise) on a single MAIN and on a MAIN+REPLICA pair. Most sentences hold, but four need fixing:

  • Sessions are closed on the drop worker's next pass. That happens within about 10 seconds, not "a few", and #1842 says "every 10 seconds".
  • A session that named the database when it connected gets Tried to retrieve an unknown database "x"., not Database required for query execution.
  • On a REPLICA, an open transaction isn't terminated and commits normally.
  • On MAIN, the commit fails with a transient error only before the session is closed.

Your open question. A USE DATABASE session keeps its connection only if it sends a query before the next pass. That query fails, and the session stays connected with no database. An idle USE DATABASE session is closed like the others, which is what you saw.

Release note on memgraph/memgraph#4843. Two of its claims didn't hold ("a session inside an open transaction is left to finish it" is true only on a REPLICA; a session that named the database is closed on the next pass, not "after that query"). Both are corrected in the PR's checklist note and in #1845.

Merge with #1842. git merge-file reports no conflicts. The merged section reads consistently once the comments below are applied.

Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx
Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Comment thread pages/database-management/multi-tenancy.mdx Outdated
Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>
@vpavicic
vpavicic merged commit cf48768 into release/3.14 Oct 20, 2026
3 checks passed
vpavicic added a commit that referenced this pull request Oct 21, 2026
* Add Memgraph v3.14.0 and Lab v3.14.0 release note titles

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: the bare pattern shorthand takes what a MATCH pattern takes (#1756)

* docs: the bare pattern shorthand takes what a MATCH pattern takes

The page stated two rules that no longer hold: that the shorthand's pattern cannot introduce names
of its own, and that it holds a pattern and nothing else so a filter needs the `MATCH` form. It now
takes a variable it declares itself, a trailing `WHERE`, a comma-separated list, a named path and a
lone node.

The worked example is the filter the old text used to send to the `MATCH` form, written as the
shorthand, with output from the page's own dataset. `COLLECT` still has no shorthand.

* docs: a pattern holding only a bound variable matches on its value

A pattern that names a variable the query has already bound used to be ignored, so the row passed
through whatever the variable held. It is now matched: a node is kept, a null matches nothing and
drops the row, and a value that is neither raises. This applies to a top-level MATCH and a CALL {}
subquery as well as to a subquery expression body, which the pages did not say.

Also documents the rule that came with it: a pattern name inside a subquery expression body may not
repeat a name from outside the body.

Every output block was produced by running the query against its own page's dataset block.

* docs: document the nullIf built-in (#1763)

* docs(querying): document the nullIf built-in

nullIf(value1, value2) answers null where the two arguments are equal
and the first argument otherwise, so it takes a value away where
coalesce supplies one.

* docs(querying): drop nullIf from the unsupported function list

It was the only entry under the scalar functions heading, so the
heading goes with it.

* Add Memgraph v3.14.0 release notes and drop per-release sitemap steps.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: unlisted auth schemes pass through on coordinators without SSO (#1792)

Document memgraph/memgraph#4962: on a coordinator, any Bolt scheme not
listed in --auth-module-mappings now takes the same passthrough path as
basic/none instead of being rejected outright. Describe the two-path
rule, the per-scheme denial messages once SSO is configured, and the
3.13 -> 3.14 behavior change.

* docs: document disk_available row in SHOW STORAGE INFO (#1791)

Documents the new instance-level disk_available row added in
memgraph/memgraph#4952. Adds it to the SHOW STORAGE INFO reference
table and the example output.

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>

* docs: allow UNWIND in an EXISTS, COUNT or COLLECT body (#1783)

* docs: add collections.index_of (#1782)

* feat: label expressions in node patterns and expressions (#1797)

* docs: label expressions in node patterns and expressions

* Update pages/querying/differences-in-cypher-implementations.mdx

---------

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>

* Document OPTIONAL CALL subqueries (#1776)

`OPTIONAL CALL ( scope ) { body }` keeps an input row whose subquery returns no
rows, with the subquery's columns set to null - the OPTIONAL MATCH contract.

Section 2.4 said the scoped `CALL (...)` form could not be combined with
`OPTIONAL` and showed the exact query that now works. It is replaced by 1.7
under the supported uses, and 2.4 now covers the case that is still rejected:
`OPTIONAL` on a procedure call rather than on a subquery, with the subquery
wrapping that does work.

* Complete the Memgraph v3.14.0 changelog.

Fill in the remaining breaking, feature, fix, and improvement notes
for merged memgraph PRs on this release.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add v3.14.0 release notes for nine more PRs and tighten bug-fix skill wording.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add v3.14.0 release notes for 18 more milestone PRs.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(dbms): close idle sessions that keep a FORCE-dropped database pinned (#1831)

* docs: forced DROP DATABASE closes idle sessions on the dropped database

* Apply batched suggestions from code review

Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>

* Apply batched suggestions from code review

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>

---------

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>
Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>

* How Memgraph compares and orders values (3.14 comparison series) (#1833)

* Document comparisons with null in lists and maps (memgraph#4794)

* Document ordering comparisons for values without an order

* Fix the ORDER BY sentence: two maps raise an error

* Document which values a uniqueness constraint never treats as duplicates

* Document ORDER BY and min/max over columns of different types (3.14 comparison series)

* Keep only what readers hit; don't restate openCypher's comparison rules

* docs: explain and raise the per-process open files limit (#1834)

* docs: explain and raise the open files limit (LimitNOFILE, Docker ulimit)

* docs: soften open files sizing numbers and document the fs.nr_open ceiling

Review follow-up: sizing figures are now approximate, and the section notes
that LimitNOFILE cannot exceed fs.nr_open and how to check it. The heading
anchor #handle-numerous-open-files-simultaneously is referenced from the
Memgraph startup warning.

* docs: pin open files limit change to v3.15 and trim unverified sizing numbers

* docs: restore upstream heading ids after rebase, add ids to new steps, target v3.14

* docs: open files limit — only the hard limit matters on 3.14; symptoms, warning and INFO line

* Document auth queries in explicit transactions (#1836)

Auth queries can now run in an explicit transaction and apply together or
not at all. Add a section on this to the authentication overview, and update
the pages that said auth queries can't run in a transaction. Document that
user and tenant profile changes are now refused in explicit transactions.

* docs(multi-tenancy): what happens after DROP DATABASE ... FORCE (#1842)

* feat(query): tenant DB in SHOW TRANSACTIONS / SHOW ACTIVE USERS + foreign-read UAF fix + precise stuck-drain diagnostics (#1843)

* docs: database columns in SHOW ACTIVE USERS INFO and SHOW TRANSACTIONS outputs

* docs(server-stats): login timestamp, username and database cells match the 3.14 behaviour

* docs: per-session state lasts for the connection; a user switch clears it (#1844)

* release notes 3.14: correct #4571 #4573 #4577 #4843 #4932; add #5029 #5129 #5132 #5135 (#1845)

* feat(query): SHOW/TERMINATE SESSIONS (#1814)

* docs: SHOW SESSIONS and TERMINATE SESSIONS

Documents the session management queries from memgraph/memgraph#4577:
listing open Bolt sessions and terminating them from another connection,
who can see and terminate which sessions, the result columns, and the
SESSIONS reserved keyword. Adds both queries to the query privileges table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: apply review on SHOW/TERMINATE SESSIONS

Also fix the TERMINATE TRANSACTIONS parameter claim and add the database
column of SHOW TRANSACTIONS.

* docs: apply review on session wording and termination behavior

* docs: real SHOW TRANSACTIONS output, FORCE note, pooled clients

* Apply batched suggestions from code review

Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>
Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>

* Conditional subqueries with WHEN in CALL, EXISTS, COUNT and COLLECT (#1813)

* docs: add conditional CALL subqueries with WHEN

* docs: allow WHEN branches in EXISTS, COUNT and COLLECT bodies

* docs: drop the predicate evaluation details

* docs: use Croatian names in the conditional CALL example

* release notes 3.14: add #4524 #4953 #5026 #5032 #5107 #5111 #5126 #5139 #5156

Co-authored-by: Cursor <cursoragent@cursor.com>

* update docs for FIPS builds of Memgraph (#1848)

* update docs for FIPS builds of Memgraph

* update docker page

* docs: move WHEN in EXISTS, COUNT and COLLECT bodies to 3.15

memgraph#4985 moved to the 3.15 milestone.

* docs: tag non-runnable examples and drop duplicate Previous releases heading

* release notes 3.14: #4969 closes only connections whose driver session targeted the database

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Ivan Milinović <44698587+imilinovic@users.noreply.github.com>
Co-authored-by: Andi Skrgat <andi8647@gmail.com>
Co-authored-by: Katarina Supe <61758502+katarinasupe@users.noreply.github.com>
Co-authored-by: andrejtonev <29177572+andrejtonev@users.noreply.github.com>
Co-authored-by: colinbarry <colin.barry@memgraph.io>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Dr Matt James <mattkjames7@gmail.com>
Co-authored-by: katarinasupe <supe.katarina@gmail.com>

This branch was successfully deployed

1 active deployment
Preview — 15fb04b8 Deployed Oct 20, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Documentation related to a new product feature of feature update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants