Release Date: 18 July 2022
Neo4j 4.4.9 is a maintenance release with many important improvements and fixes.Kernel
Fixes a bug where nodes not having the required property for a node key constraint could be created during the creation of the constraint. They would silently violate the constraint and leave the database with a non-fulfilled node key constraint
Cypher
Fixed bug where eagerness was handled incorrectly for overlaps in labels for predicates.
Do not plan distinct unions for overly large type disjunctions to avoid stack overflow errors
Fixes a bug where routing table requests may have incorrectly returned a
DatabaseNotFound
exception during an upgrade from 4.3 to 4.4
In 4.4, a
:DatabaseName
label was added to both existing:Database
nodes, and also alias nodes. TheCommunityTopologyGraphDbmsModel
uses the:DatabaseName
label in its CoreAPI queries when attempting to look up aDatabaseReference.Internal
for a given string database name.The issue is that during a rolling upgrade from 4.3 to 4.4, on instances already running 4.4 the model code has been changed and the routing table procedure has been updated to use it but the
:DatabaseName
label has not yet been created because users have not completed their upgrade or calleddbms.upgrade()
.This means that although a
:Database
node with the correct name exists, the model will returnOptional.empty()
instead of a database reference and the end user will see aDatabaseNotFound
error.This PR fixes this by updating the model logic to also consider
:Database
nodes without the:DatabaseName
label, should the correct name property match.Thanks to @mnd999 for noticing the issue and pairing on it.
Fix bug in Reduce Expressions and List comprehensions hiding variables that should be in scope https://github.com/neo4j/neo4j/issues/12868
OuterHashJoin gives wrong result if the joining nodes are from the outer apply. Fix: OuterHashJoin can only join on nodes which are introduced in the leaves of OuterHashJoin. Github issue https://github.com/neo4j/neo4j/issues/12836
Fix issue in planning a query with multiple repeated predicates in the WHERE sub-clause, reported in https://github.com/neo4j/neo4j/issues/12877
Upgrade Apache Shiro from
1.8.0
to1.9.1
. This version includes fixes forCVE-2022-32532
.Logical plans where the same variable is introduced in multiple leaves can cause trouble with inserting eager, which might make the query end up with incorrect results. Before this fix we assumed that a variable was stable as long as it was stable on one leaf. Fix: A variable should be considered unstable if it is both unstable and stable. Fixes github issue: https://github.com/neo4j/neo4j/issues/12878
Fix bug where, when there are two indexes on the same property, the planner would sometimes try to get a value from an index that doesn’t support it
Packaging
Changed neo4j.service behaviour to stop neo4j getting stuck in an endless restart loop when neo4j consistently errors on startup (for example if the neo4j.conf is misconfigured).
Causal Clustering
Fixing that a database can get stuck in store copying if it is stopped during store copy.
Fixing the "There is nothing to send." error occuring in some scenarios at the end of a store copy.
Browser
Modernize background queries & remove use of deprectated syntax
Always send transaction metadata on cypher queries
Read cluster role from SHOW DATABASES rather than deprecated dbms.cluster.role
Make sure proper metadata is passed along with queries
Handle upcoming setting renames in neo4j 5.0
Fix PNG exports font
Use SHOW TRANSACTIONS instead of dbms.listQueries in :queries
Re-add metrics for successful queries
(*) in property panel now shows node count, rather than total label count
Add url param to preselect in connect frame
Docker
Redhat are no longer supporting or updating the
openjdk
docker images that we use as base images. This means there will no longer be security updates toopenjdk
images after July 2022.Switching Docker base image to eclipse-temurin AdoptOpenJDK java built on top of
debian:bullseye-slim
.
Misc
Stop leaking passwords to the terminal when standard out is redirected. In situations like
cypher-shell -u neo4j -f statements.cypher > out.txt
.Fixed an edge case where a
None.get
exception was thrown when referencing a fabric graph inside a subquery, Github issue: neo4j/neo4j#12886
Changelog and Documentation
4.4 Changelog.4.4 Operations manual.