fix: resolve broken pipe and JSONDecodeError in poll-validation.sh#511
Merged
aavinash-nr merged 1 commit intoJun 24, 2026
Merged
Conversation
When validation fails, the failure-detail printer used: echo "$result" | python3 - <<'PYEOF' Bash gives the heredoc ownership of python3's stdin, so the pipe from echo has no reader (Broken pipe). Inside Python, sys.stdin is already consumed by the heredoc script, so json.load(sys.stdin) receives an empty string and raises JSONDecodeError. Fix: write $result to a temp file and read it from there, removing the pipe/heredoc stdin conflict entirely.
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.
What
Fixes a silent crash in
poll-validation.shthat happens when layer validation fails. The script was supposed to print which specific functions failed and why, but instead it threw a broken pipe + JSONDecodeError, so the failure detail was never shown.Why it broke
The original code piped
$resultintopython3while also using a heredoc for the script body — both trying to own Python's stdin at the same time. Bash gives the heredoc priority, leaving the pipe unread → broken pipe. Python then reads an empty stdin → JSONDecodeError.Fix
Write the result to a temp file and read from there, so there's no stdin conflict.
Test Plan
🤖 Generated with Claude Code