Skip to content

[8.4][MOD-12899] Add warning when Cursor may give inaccurate results because of ASM and add asm warnings in profile (#7869)(#7899)(#7913)#8087

Merged
JoanFM merged 7 commits into8.4from
joan-backport-7869-to-8.4
Jan 20, 2026
Merged

[8.4][MOD-12899] Add warning when Cursor may give inaccurate results because of ASM and add asm warnings in profile (#7869)(#7899)(#7913)#8087
JoanFM merged 7 commits into8.4from
joan-backport-7869-to-8.4

Conversation

@JoanFM
Copy link
Collaborator

@JoanFM JoanFM commented Jan 19, 2026

Backport #7869 and #7899 and #7913 to 8.4


Note

Introduces end-to-end handling of Atomic Slot Migration (ASM) trimming delay inaccuracy warnings.

  • Adds QEXEC_S_ASM_TRIMMING_DELAY_TIMEOUT state flag; set on coordinator when receiving QUERY_WASM_INACCURATE_RESULTS and when trimming starts with active queries (CursorList_MarkASMInaccuracy).
  • RESP2/RESP3 aggregate/search replies and cursor responses now include QUERY_WASM_INACCURATE_RESULTS in warning; profile gains PROFILE_WARNING_TYPE_ASM_INACCURATE_RESULTS and prints the warning.
  • Global stats extended: track unavailableSlots errors and asm_inaccuracy warnings; INFO MODULES exposes corresponding shard/coord counters.
  • New cursor API CursorList_MarkASMInaccuracy(); requests initialize stateflags.
  • Tests: add ASM cursor trimming scenarios for RESP2/3 and BG modes, plus helpers for shard PIDs and SIGALRM to aid migration timeouts.

Written by Cursor Bugbot for commit 06d845f. This will update automatically on new commits. Configure here.

@JoanFM JoanFM requested review from GuyAv46 and alonre24 January 19, 2026 17:23
@codecov
Copy link

codecov bot commented Jan 19, 2026

Codecov Report

❌ Patch coverage is 89.79592% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 85.93%. Comparing base (7026a10) to head (06d845f).
⚠️ Report is 4 commits behind head on 8.4.

Files with missing lines Patch % Lines
src/info/global_stats.c 70.00% 3 Missing ⚠️
src/aggregate/aggregate_exec.c 85.71% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##              8.4    #8087      +/-   ##
==========================================
- Coverage   85.95%   85.93%   -0.02%     
==========================================
  Files         332      332              
  Lines       52584    52632      +48     
  Branches    10850    10850              
==========================================
+ Hits        45198    45229      +31     
- Misses       7243     7260      +17     
  Partials      143      143              
Flag Coverage Δ
flow 84.68% <89.79%> (-0.50%) ⬇️
unit 51.46% <2.04%> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

GuyAv46
GuyAv46 previously approved these changes Jan 20, 2026
@JoanFM JoanFM added this pull request to the merge queue Jan 20, 2026
github-merge-queue bot pushed a commit that referenced this pull request Jan 20, 2026
…because of ASM (#7869) (#8087)

* manual backport of ASM warnings

* remove some warning
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 20, 2026
cursor[bot]

This comment was marked as outdated.

@JoanFM JoanFM changed the title [8.4][MOD-12899] Add warning when Cursor may give inaccurate results because of ASM (#7869) [8.4][MOD-12899] Add warning when Cursor may give inaccurate results because of ASM and add asm warnings in profile (#7869)(#7899)(#7913) Jan 20, 2026
cursor[bot]

This comment was marked as outdated.

GuyAv46
GuyAv46 previously approved these changes Jan 20, 2026
@JoanFM JoanFM enabled auto-merge January 20, 2026 08:52
@JoanFM JoanFM added this pull request to the merge queue Jan 20, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Jan 20, 2026
GuyAv46
GuyAv46 previously approved these changes Jan 20, 2026
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

import_slot_range_test(env, 'FT.SEARCH')

@skip(cluster=False, min_shards=2)
@skip
Copy link

Choose a reason for hiding this comment

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

Test unconditionally skipped without explanation or TODO

Low Severity

The test_ft_aggregate_import_slot_range test has an unconditional @skip decorator added without any explanation. Other intentionally skipped tests in this file (like test_ft_hybrid_import_slot_range) include #TODO: Enable once MOD-13110 is fixed comments explaining the skip reason. This unexplained @skip appears to be accidentally committed debugging code that disables the test without documentation.

Fix in Cursor Fix in Web

@JoanFM JoanFM enabled auto-merge January 20, 2026 13:47
@JoanFM JoanFM requested a review from GuyAv46 January 20, 2026 16:12
@JoanFM JoanFM added this pull request to the merge queue Jan 20, 2026
Merged via the queue into 8.4 with commit b0c3f54 Jan 20, 2026
30 checks passed
@JoanFM JoanFM deleted the joan-backport-7869-to-8.4 branch January 20, 2026 18:19
alonre24 added a commit to alonre24/redis that referenced this pull request Jan 26, 2026
**Bug Fixes:**

* [redis#7385](RediSearch/RediSearch#7385) Fix high temporary memory consumption when loading multiple search indexes from RDB
* [redis#7430](RediSearch/RediSearch#7430) Fix a potential deadlock in `FT.HYBRID` in cluster mode during updates.
* [redis#7454](RediSearch/RediSearch#7454) Fix a garbage collection performence regression
* [redis#7460](RediSearch/RediSearch#7460) Fix potential double-free in Fork GC error paths
* [redis#7455](RediSearch/RediSearch#7455) Fix internal cursors not being deleted promptly in cluster mode
* [redis#7667](RediSearch/RediSearch#7667) Fix a cursor logical leak upon dropping the index
* [redis#7796](RediSearch/RediSearch#7796) Fix a potential use-after-free when removing connections
* [redis#7792](RediSearch/RediSearch#7792) Fix string comparison for binary data with embedded NULLs in TOLIST reducer in FT.AGGREGATE
* [redis#7823](RediSearch/RediSearch#7823) Update `FT.HYBRID` to accept vector blobs only via parameters
* [redis#7903](RediSearch/RediSearch#7903) Fix a memory leak in Hybrid ASM
* [redis#8052](RediSearch/RediSearch#8052) Fix `FT.HYBRID` behavior when used with `LOAD *`
* [redis#8082](RediSearch/RediSearch#8082) Fix incorrect FULLTEXT field metric counts
* [redis#8089](RediSearch/RediSearch#8089) Fix an edge case in `CLUSTERSET` handling
* [redis#8152](RediSearch/RediSearch#8152) Fix configuration registration issues

**Improvements:**

* [redis#7427](RediSearch/RediSearch#7427) Enhance `FT.PROFILE` with vector search execution details
* [redis#7431](RediSearch/RediSearch#7431) Ensure full `FT.PROFILE` output is returned on timeout with RETURN policy
* [redis#7507](RediSearch/RediSearch#7507) Track timeout warnings and errors in INFO
* [redis#7576](RediSearch/RediSearch#7576) Track OOM warnings and errors in INFO
* [redis#7612](RediSearch/RediSearch#7612) Track `maxprefixexpansions` warnings and errors in INFO
* [redis#7960](RediSearch/RediSearch#7960) Persist query warnings across cursor reads
* [redis#7551](RediSearch/RediSearch#7551), [redis#7616](RediSearch/RediSearch#7616), [redis#7622](RediSearch/RediSearch#7622), [redis#7625](RediSearch/RediSearch#7625) Add runtime thread and pending-jobs metrics
* [redis#7589](RediSearch/RediSearch#7589) Support multiple slot ranges in `search.CLUSTERSET`
* [redis#7707](RediSearch/RediSearch#7707) Add `WITHCOUNT` support to `FT.AGGREGATE`
* [redis#7862](RediSearch/RediSearch#7862) Add support for subquery `COUNT` in `FT.HYBRID`
* [redis#8087](RediSearch/RediSearch#8087) Add warnings when cursor results may be affected by ASM and expose ASM warnings in `FT.PROFILE`
* [redis#8049](RediSearch/RediSearch#8049) Add logging for index-related commands
* [redis#8150](RediSearch/RediSearch#8150) Fix shard total profile time reporting in `FT.PROFILE`
YaacovHazan pushed a commit to redis/redis that referenced this pull request Jan 26, 2026
**Bug Fixes:**

* [#7385](RediSearch/RediSearch#7385) Fix high
temporary memory consumption when loading multiple search indexes from
RDB
* [#7430](RediSearch/RediSearch#7430) Fix a
potential deadlock in `FT.HYBRID` in cluster mode during updates.
* [#7454](RediSearch/RediSearch#7454) Fix a
garbage collection performence regression
* [#7460](RediSearch/RediSearch#7460) Fix
potential double-free in Fork GC error paths
* [#7455](RediSearch/RediSearch#7455) Fix
internal cursors not being deleted promptly in cluster mode
* [#7667](RediSearch/RediSearch#7667) Fix a
cursor logical leak upon dropping the index
* [#7796](RediSearch/RediSearch#7796) Fix a
potential use-after-free when removing connections
* [#7792](RediSearch/RediSearch#7792) Fix string
comparison for binary data with embedded NULLs in TOLIST reducer in
FT.AGGREGATE
* [#7704](RediSearch/RediSearch#7704) Use
asynchronous jobs for GC in SVS to accelerate execution
* [#7823](RediSearch/RediSearch#7823) Update
`FT.HYBRID` to accept vector blobs only via parameters
* [#7903](RediSearch/RediSearch#7903) Fix a
memory leak in Hybrid ASM
* [#8052](RediSearch/RediSearch#8052) Fix
`FT.HYBRID` behavior when used with `LOAD *`
* [#8082](RediSearch/RediSearch#8082) Fix
incorrect FULLTEXT field metric counts
* [#8089](RediSearch/RediSearch#8089) Fix an
edge case in `CLUSTERSET` handling
* [#8152](RediSearch/RediSearch#8152) Fix
configuration registration issues

**Improvements:**

* [#7427](RediSearch/RediSearch#7427) Enhance
`FT.PROFILE` with vector search execution details
* [#7431](RediSearch/RediSearch#7431) Ensure
full `FT.PROFILE` output is returned on timeout with RETURN policy
* [#7507](RediSearch/RediSearch#7507) Track
timeout warnings and errors in INFO
* [#7576](RediSearch/RediSearch#7576) Track OOM
warnings and errors in INFO
* [#7612](RediSearch/RediSearch#7612) Track
`maxprefixexpansions` warnings and errors in INFO
* [#7960](RediSearch/RediSearch#7960) Persist
query warnings across cursor reads
* [#7551](RediSearch/RediSearch#7551),
[#7616](RediSearch/RediSearch#7616),
[#7622](RediSearch/RediSearch#7622),
[#7625](RediSearch/RediSearch#7625) Add runtime
thread and pending-jobs metrics
* [#7589](RediSearch/RediSearch#7589) Support
multiple slot ranges in `search.CLUSTERSET`
* [#7707](RediSearch/RediSearch#7707) Add
`WITHCOUNT` support to `FT.AGGREGATE`
* [#7862](RediSearch/RediSearch#7862) Add
support for subquery `COUNT` in `FT.HYBRID`
* [#8087](RediSearch/RediSearch#8087) Add
warnings when cursor results may be affected by ASM and expose ASM
warnings in `FT.PROFILE`
* [#8049](RediSearch/RediSearch#8049) Add
logging for index-related commands
* [#8150](RediSearch/RediSearch#8150) Fix shard
total profile time reporting in `FT.PROFILE`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants