Repository navigation
v4.22.3
FalkorDB 4.22.3
Bug Fixes
-
Indexed values of
0orfalsedisappeared after a reload.
A range-indexed property whose value was0,0.0orfalsewas dropped
from the index every time the index was rebuilt from an RDB: on restart,
RESTORE, replica full sync or failover. The node or edge stayed in the
graph, but index lookups no longer found it, so aMERGEon that value could
create a duplicate. The fix is in RediSearch (FalkorDB/RediSearch#31), which
this release picks up. (#3512, #3513) -
Crash on a fixed-length variable-length pattern with a filtered far endpoint.
A query likeMATCH (a:A)-[*2..2]-(b:B {id: 2}) RETURN count(*), or the same
filter written asWHERE b.id = 2, crashed the server. With a relationship
type ([:R*2..2]) the query didn't crash but returned no rows. The planner
started the traversal from the edge and then read the edge as a node label.
Present since 4.20.0. (#2542, #3539) -
Assertion failure on
OPTIONAL MATCHinside nestedCALLsubqueries.
When a nestedCALL {}branch produced no rows, the innerOPTIONAL MATCH
traversal was reset before it had ever run, and clearing its uninitialized
state aborted debug builds. (#3475, #3474)
Improvements
- Write queries no longer freeze the server while waiting for the graph lock.
A write query used to take Redis's global lock and then wait, still holding
it, for the graph's write lock. A long-running read on one graph could
therefore stall every other command on the server. A writer now waits at most
WRITE_LOCK_POLL_INTERVALmilliseconds for the graph lock, then releases
Redis's global lock and tries again. While a writer is waiting, new read
queries on the same graph let it go first so it isn't starved. That wait
counts against the read query's timeout, and a read that runs out of time
fails with the usual timeout error. (#3421, #3422)
Configuration
- New
WRITE_LOCK_POLL_INTERVAL(milliseconds, default5): how long a write
query waits for the graph write lock before releasing Redis's global lock and
retrying.0restores the previous behavior of a single blocking wait.
Settable as a module argument or at runtime withGRAPH.CONFIG SET. (#3422)
Dependencies
- GraphBLAS updated to 10.5.2-beta2, with the precompiled (PreJIT) kernels
regenerated for the new version. (#3420) - RediSearch updated to include the index fix above. (#3513)
Full Changelog: v4.22.2...v4.22.3