Repository navigation
Conversation
- Fix listStorageKeys returning durability instead of the storage key by indexing parts.slice(4).join(':')
- Guard against unexpected key shapes with parts.length >= 5
- Add warning logging in exportContractState when individual key reads fail
- Add unit tests for listStorageKeys (durability vs key, colon handling, fallback) and exportContractState
|
@shobhamerabacha-star is attempting to deploy a commit to the Akargi Team on Vercel. A member of the Team first needs to authorize it. |
Contributor
|
✅ Ready to merge — all CI checks pass (Build and TypeScript Check ✅). The Vercel deployment failures are authorization issues unrelated to the code changes. This PR fixes an off-by-one bug in Soroban contract state key extraction and includes comprehensive tests. Safe to merge when a maintainer with write access reviews. |
8 tasks
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.
Summary
This PR resolves an off-by-one error in
ContractStateService.listStorageKeys()whereparts[3]was returning the cache entry's durability instead of the actual storage key. It also adds warning logging when individual key reads fail duringexportContractState()and provides full unit test coverage.Changes Made
Storage Key Indexing & Structure (
src/modules/stellar/soroban/contract-state.service.ts):soroban:state:{contractId}:{durability}:{keyPart}.listStorageKeys()to checkparts.length >= 5and extractparts.slice(4).join(':'), ensuring storage keys with colons are fully preserved.Failure Logging (
exportContractState):this.logger.warn()inexportContractStatewhen individual key fetches fail, replacing silent error swallowing while allowing the rest of the export to proceed.Unit Test Coverage (
src/modules/stellar/soroban/contract-state.service.spec.ts):listStorageKeys()returns actual storage keys (admin_address,fee_rate) and never durability strings (persistent,temporary).user:account:12345) are preserved.exportContractState()exports all cached state and logs a warning on key read failure.Closes #87