fix: add pagination to auto_close_service run() to prevent memory exhaustion (#1524)#1746
Conversation
…austion Fixes ritesh-1918#1524 The run() method previously fetched ALL resolved tickets in a single unbounded query. At scale, this causes memory exhaustion and timeouts on the scheduled cron job. This fix adds paginated fetching using .range() with a PAGE_SIZE of 1000, looping until all pages are consumed. Each page is logged for observability. Also matches the test_query() debug method which already uses .limit(10).
|
@duongynhi000005-oss is attempting to deploy a commit to the ritesh Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hi @duongynhi000005-oss! 🙌 Thank you so much for your excellent contribution: "fix: add pagination to auto_close_service run() to prevent memory exhaustion (#1524)"! We really appreciate the high-quality code and effort you have put into the platform. Just a quick, friendly heads-up as we prepare our manual merging and verification queues—please make sure to complete all the mandatory community steps listed below. Once those manual steps are verified, we'll get your PR officially merged into the Let's build something amazing together! 🚀🔥 🌟 Project Support & Developer Network (Show Some Love!)As we prepare our manual verification and merging queues, please take a quick moment to ensure you have completed all four community steps:
Note: Having all four steps completed manually is required before your PR points are officially cleared. |
|
Merged locally into gssoc branch. Thank you for your GSSoC contribution! 🚀🔥 |
Summary
Fixes #1524
The
run()method inbackend/services/auto_close_service.pypreviously fetched ALL resolved tickets in a single unbounded query with no.limit()or pagination. As ticket count grows, this loads every resolved ticket from every company into memory at once on every cron run, causing memory exhaustion and timeouts.Changes
.range()with a PAGE_SIZE of 1000len(page) < PAGE_SIZE)Testing
test_query()debug method already uses.limit(10), showing awareness of this concern — this fix applies the same principle to the productionrun()method.