Skip to content

[8.4] [MOD-12668] Use asynchronous jobs for in GC for SVS#7704

Merged
alonre24 merged 1 commit into8.4from
backport-7666-to-8.4
Dec 10, 2025
Merged

[8.4] [MOD-12668] Use asynchronous jobs for in GC for SVS#7704
alonre24 merged 1 commit into8.4from
backport-7666-to-8.4

Conversation

@redisearch-backport-pull-request
Copy link
Contributor

@redisearch-backport-pull-request redisearch-backport-pull-request bot commented Dec 9, 2025

Description

Backport of #7666 to 8.4.


Note

Adds num_jobs_in_progress to threadpool stats and returns it in FT.DEBUG WORKERS stats, updating related tests and refining VecSim INFO/GC tests.

  • Threadpool / Debug stats:
    • Add num_jobs_in_progress to thpool_stats and populate in redisearch_thpool_get_stats.
    • Return numJobsInProgress in FT.DEBUG WORKERS stats reply.
  • Tests:
    • Update tests/pytests/test_debug_commands.py to expect numJobsInProgress in workers stats.
    • Refine tests/pytests/test_info_modules.py VecSim INFO test:
      • Use PREFIX for HNSW/FLAT indexes, adjust doc insertion, expect 3 marked-deleted vectors, and drain workers post-GC.
    • Enhance tests/pytests/test_vecsim_svs.py GC test:
      • Import DEFAULT_BLOCK_SIZE/getWorkersThpoolStats, parameterize workers, assert low-priority pending GC jobs equal workers, and pause/resume/drain around GC.

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

* bump vecsim + add test (wip)

* Use and test GC jobs

* improve test with pauseing threadpool

* fix for test_redis_info_modules_vecsim to account for gc in svs

* fix cursor comments

(cherry picked from commit 2402970)
@codecov
Copy link

codecov bot commented Dec 9, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.93%. Comparing base (aaef385) to head (7e4c28e).
⚠️ Report is 2 commits behind head on 8.4.

Additional details and impacted files
@@            Coverage Diff             @@
##              8.4    #7704      +/-   ##
==========================================
- Coverage   85.97%   85.93%   -0.05%     
==========================================
  Files         331      331              
  Lines       52886    52888       +2     
  Branches    11998    11998              
==========================================
- Hits        45471    45448      -23     
- Misses       7248     7273      +25     
  Partials      167      167              
Flag Coverage Δ
flow 84.48% <100.00%> (-0.32%) ⬇️
unit 52.63% <50.00%> (+<0.01%) ⬆️

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.

@redisearch-backport-pull-request redisearch-backport-pull-request bot added this pull request to the merge queue Dec 9, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Dec 9, 2025
@alonre24 alonre24 added this pull request to the merge queue Dec 10, 2025
Merged via the queue into 8.4 with commit 3ab8861 Dec 10, 2025
29 checks passed
@alonre24 alonre24 deleted the backport-7666-to-8.4 branch December 10, 2025 08:55
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.

1 participant