-
Notifications
You must be signed in to change notification settings - Fork 687
Cache not found paths as -1 to reduce jdbc calls #4447
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 4.9.x
Are you sure you want to change the base?
Conversation
WalkthroughA single file modification to JDBCPathCache implementing negative caching: when a path lookup returns no results, the code now stores a cache entry with pathId value of -1 as a sentinel, preventing subsequent redundant database lookups for non-existent paths. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ 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 |
...carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/dao/JDBCPathCache.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AI Agent Log Improvement Checklist
- The log-related comments and suggestions in this review were generated by an AI tool to assist with identifying potential improvements. Purpose of reviewing the code for log improvements is to improve the troubleshooting capabilities of our products.
- Please make sure to manually review and validate all suggestions before applying any changes. Not every code suggestion would make sense or add value to our purpose. Therefore, you have the freedom to decide which of the suggestions are helpful.
✅ Before merging this pull request:
- Review all AI-generated comments for accuracy and relevance.
- Complete and verify the table below. We need your feedback to measure the accuracy of these suggestions and the value they add. If you are rejecting a certain code suggestion, please mention the reason briefly in the suggestion for us to capture it.
| Comment | Accepted (Y/N) | Reason |
|---|---|---|
| #### Log Improvement Suggestion No: 1 | N | Not required |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/dao/JDBCPathCache.java (1)
513-516: Consider adding debug logging for observability.The past review suggested adding a
log.debug()statement when caching the-1sentinel. While not essential, this would improve observability when troubleshooting cache behavior or verifying the optimization is working as intended.🔎 Optional: Add debug logging
} else { //not found . set -1 in the cache as well for the path + if (log.isDebugEnabled()) { + log.debug("Path not found in database: " + path + ". Caching with ID -1."); + } RegistryCacheEntry e = new RegistryCacheEntry(-1); cache.put(key, e); }
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/dao/JDBCPathCache.java
🔇 Additional comments (1)
core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/dao/JDBCPathCache.java (1)
513-516: Negative caching implementation looks correct.The logic properly caches
-1as a sentinel for non-existent paths, which will effectively reduce redundant database queries for repeatedly requested missing resources (e.g., missing API thumbnails). The sentinel value is consistent with the method's existing return value, and the cache will be correctly updated if the path is later added viaaddEntry().
Purpose
To fix wso2/api-manager#4581
Approach
Cherry picked from #3605
This was previously fixed with #3606, but the commit had been removed during the 4.9.x branch creation
If the path was not found, keep the cached value as -1, so it doesn't have to check the file multiple times
Testing
SELECT REG_PATH_ID FROM REG_PATH ...queries before the fix and after the fix.Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.