refactor: optimize SMS log aggregator store stats#825
Merged
RUKAYAT-CODER merged 1 commit intoJun 29, 2026
Conversation
- Replaced full-store iteration in getStoreStats() with pre-computed counters. - Added totalMessages, failedCount, and successRate to the stats response. - Implemented unit tests to verify stats are computed correctly and incrementally over 1000 insertions.
|
@DevALVIN-24 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
Thank you for contributing to the project. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #745
🚀 Overview
Fixes: Performance degradation in
getStoreStats()when SMS log store reaches its maximum capacity.The
/api/sms/logs?action=store-statsendpoint callsSMSLogAggregator.getStoreStats()to return aggregated summary statistics. Previously, this operation could consume significant CPU and memory because it potentially serialized or iterated over the entire raw log array (up to 5,000 entries) per request.🛠️ Changes Made
totalMessages,successfulMessages, andfailedMessagescounters to theSMSLogAggregatorstate.addToStoreto incrementally update these static counters dynamically when a new log record is processed.getStoreStats()to simply compute and return the cached counters, ensuring O(1) constant time complexity for the stats endpoint.src/lib/logging/sms-aggregator.test.tswith a unit test that verifies the accuracy of the tracked statistics over 1,000 insertions without touching the array.🧪 Verification
getStoreStats()operates in constant time regardless of currentsmsLogStoresize.successRate.