Repository navigation
Releases
pulumi-journaling 3.275.0+journaling.2
Recover flushed Rapid journal entries after interrupted updates, protect recovered state from stale edits, and reduce storage round trips during journaling.
CLI: 3.275.0+journaling.2
Python: pulumi-journaling==3.275.0.post2, with pulumi==3.275.0
- Fix recovery of flushed Rapid journal entries when an interrupted append stream reports a stale or zero metadata size
- Recover unfinished journals before state edits and refuse imports built from state that recovery has since changed
- Warn when previews show the checkpoint from before an interrupted update, and distinguish active updates from journals needing recovery or explicit discard
- Preserve older checkpoint formats during journal startup, recovery and evidence-preserving discard
- Reduce redundant checkpoint reads, journal listings and Rapid metadata and cleanup requests while retaining conditional writes and epoch validation
- Add storage-operation timing traces at verbosity 7
- Document same-zone GCS Rapid persistence benchmarks, recovery procedures and the recovery-first upgrade path for legacy non-project state
Same-zone GCS Rapid benchmarks measured 70.97s without journaling versus 1.91s with journaling for 50 updates in a 152-resource state (37.1×). These are median state-persistence timings from three paired trials, including journal startup and consolidation, with simulated provider completions. CLI startup and provider execution are excluded; deployment speedup depends on provider latency. Startup and consolidation dominate the remaining journaling time. The benchmark qualification policy is unchanged: automatic refresh journaling remains off and the minimum stays at 10 mutations.
All benchmark timings · Report and trace analysis · CSV
Pulumi 3.275.0 requires project-scoped DIY state. Recover unfinished journals with the CLI that created them, then use Pulumi 3.274.1 or pulumi-journaling==3.274.1.post2 to run pulumi state upgrade before installing this release. Upgrade and recovery guide.
All four Linux and macOS bundles preserve the matching upstream language hosts and carry SHA-256 checksums and provenance from source commit c48d94772135b1df4aa036dd2595cd2eaa8a2bca. Based on upstream commit cc3a399d789290e4d98becbbec4ffca3ad30230d.
Complete fork changelog · Upstream Pulumi 3.275.0 changelog
Validation passed locally for repository formatting, full linting, fast tests, Python helpers, strict Python package metadata, race-enabled backend and state commands, and the file, S3, GCS, Azure and PostgreSQL storage drivers. LSP diagnostics were clean. The native macOS ARM64 bundle passed two 17-command CLI deployment and crash-recovery runs, covering explicit and automatic recovery; both Linux cross-builds also passed 17-command smoke runs in local containers.
An initial supplementary lifecycle race run detected concurrent writes in the unchanged upstream TestReplaceWithAndDeletedWith test fixture. The complete lifecycle race rerun passed, and CI validation also passed. No engine or lifecycle source changed in this release.
Publication uses the verified prebuilt workflow: Linux x86-64, Linux ARM64 and Intel macOS bundles passed hosted CI build and 17-command CLI crash-recovery tests. The macOS ARM64 bundle was built and smoke-tested locally from the same source commit while its hosted runner remained queued. CI validation passed; the redundant build workflow was stopped after its three hosted bundles passed and were downloaded.
pulumi-journaling 3.275.0+journaling.1
Upgrade the fork to Pulumi v3.275.0, preserving recoverable journaling for file, S3, GCS, Azure Blob and PostgreSQL backends, including Rapid GCS append streams.
CLI: 3.275.0+journaling.1
Python: pulumi-journaling==3.275.0.post1, with pulumi==3.275.0
The four Linux and macOS bundles retain the matching upstream language hosts and include source provenance and SHA-256 checksums. Built from source commit 6fb70e60e9a7155ace29b7b00ccc2e44adecae7e, based on upstream commit cc3a399d789290e4d98becbbec4ffca3ad30230d.
Pulumi 3.275.0 requires project-scoped DIY state. For legacy non-project state, run pulumi state upgrade using Pulumi 3.274.1 or pulumi-journaling==3.274.1.post2 before installing this release.
Validation: repository formatting, linting, dependency consistency and CLI fast tests; Go and Python SDK fast tests; race-enabled backend, engine, lifecycle and state-command tests; and file, S3, GCS, Azure and PostgreSQL storage-driver tests passed locally. The unchanged upstream Node.js SDK suite crashes on its circular-reference serialization test in the local Node 22 environment; this limitation was reviewed and accepted for this release. Node SDK linting and the full code-generation regression suite passed. The native macOS ARM64 bundle also passed two 17-command CLI deployment and crash-recovery runs, covering automatic and explicit recovery.
Installation and recovery guide
Publication uses the verified prebuilt workflow: Linux x64, Linux ARM64 and Intel macOS bundles passed CI, and the macOS ARM64 bundle was built and validated locally from the same source commit while its hosted runner remained queued.
README usage guide covers enabling journaling, backend selection, recovery and disabling new journals.
pulumi-journaling 3.274.1+journaling.2
Adds gs://...?...gcs_api=rapid support for Google Cloud Storage Rapid state backends using the Go SDK's gRPC transport. Rapid updates keep one append stream open, acknowledge durable framed prefixes, and finalize once at close. Checkpoints publish atomically with generation preconditions. Other DIY storage backends retain their existing journaling and recovery paths.
The README recommends low-latency storage colocated with deploy runners. Rapid runners can require direct connectivity with PULUMI_GCS_DIRECT_PATH=required.
Validated with backend unit and race tests, linters, 17 real CLI lifecycle/recovery commands on macOS file storage, and 17 real CLI commands on a same-zone Rapid canary with direct connectivity required. Two matched CICD storage-only samples measured median ten-update journaling of 1.85s on Rapid versus 3.28s on regional Standard GCS; provider execution is excluded.
CLI bundles are checksummed and built from source commit fdc426b. Includes matching language hosts and the Python launcher distribution.
pulumi-journaling 3.274.1+journaling.1
Independent fork of Pulumi v3.274.1, maintained by E Brake ebrake123@icloud.com.
DIY journaling is based on Jason Rowsell's prototype in PR #22074, hardened and extended by E Brake with encrypted durable prefixes, guarded epochs, crash recovery, read-only isolation, integrity validation, evidence-preserving discard, backups and retention, compression, and conditional writes for every DIY backend.
Supported storage: local files, GCS, S3 and compatible services, Azure Blob Storage, and PostgreSQL. Pulumi Cloud retains its upstream journaling behavior. S3-compatible services must support conditional writes and strongly consistent reads and listings.
All four bundles use source commit 44468318774b0c994121405f4d09453832c6e684. Linux x86-64, Linux ARM64 and macOS x86-64 were built and smoke-tested in GitHub Actions. The macOS ARM64 bundle was built and smoke-tested natively on macOS after GitHub reported hosted ARM64 capacity constraints. All five backend drivers passed compression, immutability, recovery and concurrent-checkpoint tests against isolated services. Additional real CLI runs covered every backend. Formatting, full lint, fast tests, Go SDK fast tests, module tidy, lifecycle tests, LSP diagnostics and Python packaging checks passed.
Install pulumi-journaling==3.274.1.post1 from PyPI. The Python launcher enables DIY journaling by default and downloads the matching bundle using checksums embedded in the package. Standalone CLI bundles require PULUMI_DIY_BACKEND_JOURNALING=true.
See the recovery guide, authors, notices, and Apache 2.0 license. This fork is independently maintained and is not affiliated with or endorsed by Pulumi Corporation.