Conversation
…cProcessor, and TokenCreated ExtrinsicProcessor/EventProcessor: - Guard against string values from DB longText columns for block.events and block.extrinsics (is_array check instead of null-coalescing) - Filter null events before accessing extrinsicIndex property to prevent "Attempt to read property on null" errors in saveExtrinsicEvents and updateTransaction TokenCreated: - Use firstOrCreate instead of create to prevent UniqueConstraintViolationException when re-processing blocks where the token already exists from a later block's ingestion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ssing When chain_getBlock returns data, extract block.header.number and compare with the stored block number. If there's a mismatch (stale hash from chain reorg), re-fetch the correct hash and retry. This prevents false 'Missing Extrinsic Timestamp::set' errors caused by hash/number mismatches. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…per minute - Changed chainIds validation from max:10/max:1000 to max:1 regardless of hotSync mode - Added per-IP rate limiting (1 request per 60 seconds) using Laravel RateLimiter, matching the pattern used by RefreshMetadataMutation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only limit to 1 chainId when hotSync is enabled; keep the original max:1000 for non-hotSync. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolves InvalidArgumentException thrown when Arr::get() returns a string value (e.g. a token integer value) from nested input args. RequiredIf only accepts callable|bool, so the Arr::get() result is now explicitly cast to bool, which matches the original intent of checking parent object presence. Fixes PLA-2298 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The 'track multiple collections' entry asserted HotSync was pushed despite hotSync: false being set, making it impossible to pass. Removed in favour of the correct 'track multiple collections without hot sync' entry which asserts assertNotPushed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
InvalidArgumentException: The provided condition must be a callable or booleanthrown duringBatchMint(and other) GraphQL mutationsArr::get($args, ...)can return a string (e.g. a token integer value like"5") when theRule::forEachattribute path resolves to an encoder sub-field insidetokenId.RequiredIfonly acceptscallable|bool— strings throwArr::get()result toboolin all threegetEncodableTokenIdRules*methods — this matches the original intent (check whether the parent input object is present)Closes PLA-2298
Test plan
BatchMintmutation withmintParamscontaining a token integer ID — should no longer throwphp artisan test tests/Feature/GraphQL/Mutations/BatchMintTest.phpphp artisan test🤖 Generated with Claude Code