Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-20430

yaml.sh split_output() drops node.yml indentation, corrupting Build/Node YAML blocks

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Medium Medium
    • None
    • None
    • 3
    • 9223372036854775807

      Description

      split_output() in lustre/tests/yaml.sh writes each node.<host>.yml via an unquoted echo $line. Under bash this word-splits the line and re-joins words with single spaces, stripping the leading indentation of the Build: and Node: block bodies.

      The result is invalid YAML: with their fields at column 0, Build: and Node: parse as null, so consumers lose all build/environment info (architecture, os_distribution, version, kernel_version) and per-node details (architecture, mem_size, nids).

      Regression

      Introduced by commit 182aa9aa01f (LU-12597), a "whitespace and style cleanup" that changed echo "$line" to echo $line, dropping the quotes.

      Scope

      Only the non-shared logdir path (do_rpc_nodes ... | split_output) is affected; runs with a shared logdir write each node's file directly, which is why it went unnoticed.

      Example

      Buggy output (fields at column 0 – Build: parses as null):

      Build:
      lbats_build_id:
      architecture: aarch64
      os_distribution: Rocky 10.1
      version: 2.17.53.12
      kernel_version: 6.12.0-124.56.1.el10_1.aarch64
      file_system: ldiskfs
      

      Correct output:

      Build:
          lbats_build_id:
          architecture: aarch64
          os_distribution: Rocky 10.1
          version: 2.17.53.12
          kernel_version: 6.12.0-124.56.1.el10_1.aarch64
          file_system: ldiskfs
      

      Fix

      Quote the line so indentation is preserved, and use read -r to avoid mangling backslashes.

      Verification

      Reproduced end-to-end against a results consumer: a real auster run with the buggy yaml.sh imported empty Build/Node blocks (architecture, mem_size, nids, os_distribution, kernel_version, version all blank); the same run with the fixed yaml.sh imported all fields correctly.

            wc-triage WC Triage
            rread Robert Read
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: