Skip to content

Release SPSUpdate for version 3.2.1#16

Merged
luigilink merged 1 commit into
mainfrom
release/3.2.1
Jun 11, 2026
Merged

Release SPSUpdate for version 3.2.1#16
luigilink merged 1 commit into
mainfrom
release/3.2.1

Conversation

@luigilink

@luigilink luigilink commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Pull Request (PR) description

Release 3.2.1 of SPSUpdate. A focused, additive maintenance release — no
public surface changes, JSON contract preserved.

This Pull Request (PR) fixes the following issues

Highlights
  • Balanced ContentDatabase distribution (Initialize-SPSContentDbJsonFile).
    Replaces the previous floor(count / 4) splitter with a Longest Processing
    Time First (LPT)
    scheduler that distributes databases across the four
    sequences by DiskSizeRequired. Parallel upgrade workloads now finish closer
    to the same time. This also fixes a silent edge case where fewer than 4
    databases caused groupSize to evaluate to 0 and dumped every database
    into SPContentDatabase4.

  • Transcript distribution report. After building the inventory,
    Initialize-SPSContentDbJsonFile prints a per-sequence summary
    (count, MB, %) so the balancing decision is auditable from the log:

    --- ContentDatabase Distribution Report ---
    Total : 12 database(s) | 184,320 MB
      Sequence 1 :   3 database(s) |  46,080 MB |  25.0%
      Sequence 2 :   3 database(s) |  46,080 MB |  25.0%
      Sequence 3 :   3 database(s) |  46,080 MB |  25.0%
      Sequence 4 :   3 database(s) |  46,080 MB |  25.0%
    -------------------------------------------
    
  • Timestamped inventory snapshots. Each run now also writes
    <basename>_yyyy-MM-dd_HH-mm-ss.json next to the canonical inventory file,
    so previous inventories accumulate in scripts/Config/ for review or
    rollback. The canonical file (consumed by SPSUpdate.ps1) is still
    overwritten in place — the JSON contract is unchanged. Snapshot
    failures are logged via Write-Verbose and never block the canonical write.

  • Patch installer switched from /quiet to /passive in
    Start-SPSProductUpdate. The patch still installs without user
    interaction, but a progress UI is now displayed when the script is run
    interactively. Exit-code handling and the post-install service-restoration
    logic are unchanged.

    Note: /passive requires an interactive desktop session. If you run
    SPSUpdate.ps1 from a non-interactive scheduled task or a remote
    WinRM session, you may want to revert to /quiet locally.

  • Pester coverage added for Initialize-SPSContentDbJsonFile (4 tests):

    • no file written when Get-SPContentDatabase returns $null
    • regression for the floor(count / 4) edge case (3 DBs → 3 distinct sequences)
    • LPT balancing by size (the largest DB lands alone in its sequence)
    • the SPContentDatabase1..4 JSON property contract consumed by SPSUpdate.ps1
    • a snapshot file is produced and its content matches the canonical file
Files changed
File Change
scripts/Modules/sps.util.psm1 LPT scheduler, distribution report, snapshot writer
scripts/SPSUpdate.ps1 /passive patch install; $SPSUpdateVersion3.2.1; .NOTES header bumped
tests/Modules/sps.util.Tests.ps1 New Describe 'Initialize-SPSContentDbJsonFile' block
tests/SPSUpdate.Tests.ps1 Version-string assertion bumped to 3.2.1
CHANGELOG.md, RELEASE-NOTES.md New [3.2.1] - 2026-06-11 entry
Compatibility
  • PATCH bump per SemVer — no breaking changes.
  • The SPContentDatabase1..4 JSON property names and per-entry shape
    (Name, Server, WebAppUrl) consumed by SPSUpdate.ps1 are unchanged.
  • Function signatures, exported names, action set and configuration schema
    are unchanged.
  • Pester tests pass locally with PowerShell 7; CI (pwsh on
    windows-latest, Pester 5.3+) will validate Windows PowerShell behavior
    on this PR.

This Pull Request (PR) fixes the following issues

None.

Task list

  • Added an entry to the change log under the Unreleased section of the
    file CHANGELOG.md. Entry should say what was changed and how that
    affects users (if applicable), and reference the issue being resolved
    (if applicable).
  • Added/updated documentation and descriptions where appropriate?
  • New/changed code adheres to [Style Guidelines]?

…ent database distribution, add distribution report and timestamped snapshots, update patch installation method, and fix edge case in database assignment; bump version to 3.2.1 and add corresponding tests.
@github-actions

Copy link
Copy Markdown

Pester Test Results

92 tests   92 ✅  5s ⏱️
19 suites   0 💤
 1 files     0 ❌

Results for commit 906b342.

@luigilink luigilink merged commit 5d46767 into main Jun 11, 2026
3 checks passed
@luigilink luigilink deleted the release/3.2.1 branch July 9, 2026 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request]: Split biggest Content Databases in each sequence instead of one sequence

1 participant