fix(update): iterate compose services as an array to avoid word-splitting - #3502
Open
patil2001 wants to merge 1 commit into
Open
fix(update): iterate compose services as an array to avoid word-splitting#3502patil2001 wants to merge 1 commit into
patil2001 wants to merge 1 commit into
Conversation
…ting cmd_health stored the 'docker compose ps --services' output in a scalar and iterated it with 'for service in $services', which word-splits service names on whitespace. Any service whose name contains a space was split into tokens and probed as a fragment, reporting a false unhealthy status. Read the service list into an array with mapfile and iterate over whole elements so multi-word service names stay intact. Fixes Osmantic#3339
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
cmd_healthinods-update.shcaptured the output ofdocker compose ps --servicesin a scalar variable and iterated it withfor service in $services.docker compose ps --servicesemits one service name per line, so the unquoted expansion word-splits on whitespace: any service whose name contains a space is torn into fragments and probed as a partial name, producing a falseunknown/unhealthy report.This change reads the service list into an array with
mapfileand iterates over whole elements, so multi-word service names stay intact. The empty-case check now uses the array length.Test plan
bash -n ods/ods-update.shFixes #3339