Skip to content

[PLA-2317]: Fix block re-processing crashes in EventProcessor, ExtrinsicProcessor, and TokenCreated#364

Open
pawell67 wants to merge 21 commits intomasterfrom
feature/PLA-2317/block-processor-fixes
Open

[PLA-2317]: Fix block re-processing crashes in EventProcessor, ExtrinsicProcessor, and TokenCreated#364
pawell67 wants to merge 21 commits intomasterfrom
feature/PLA-2317/block-processor-fixes

Conversation

@pawell67
Copy link
Copy Markdown
Contributor

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

@pawell67 pawell67 requested a review from zlayine February 14, 2026 21:19
@pawell67 pawell67 self-assigned this Feb 14, 2026
@pawell67 pawell67 changed the title PLA-2317: Fix block re-processing crashes in EventProcessor, ExtrinsicProcessor, and TokenCreated [PLA-2317]: Fix block re-processing crashes in EventProcessor, ExtrinsicProcessor, and TokenCreated Feb 23, 2026
@pawell67 pawell67 force-pushed the feature/PLA-2317/block-processor-fixes branch 3 times, most recently from f041e26 to 58c5f63 Compare February 27, 2026 12:07
pawell67 and others added 18 commits March 9, 2026 14:57
…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>
@pawell67 pawell67 force-pushed the feature/PLA-2317/block-processor-fixes branch from 552da04 to 4e91b3c Compare March 9, 2026 13:59
pawell67 and others added 3 commits March 10, 2026 10:08
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant