Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,18 +185,18 @@ jobs:
# 1.6 GB -> 163 MB), budgeted here at 20% = 135 MB for the largest. Per-pom Maven entries
# were 56-350 MB and per-go.sum Go entries 22-248 MB (avg 111 MB), so those two are
# what outgrew the quota, not Conan. Steady state on main:
# Conan 22 x <=135 MB (typical 82) <= 3.0 GB
# Maven 1 shared union <= 1.0 GB (estimate)
# Go 1 shared module cache <= 0.6 GB (estimate)
# Conan 22 x <=135 MB (typical 80) <= 3.0 GB
# Maven 1 shared union 0.45 GB (measured: 446 MB)
# Go 1 shared module cache 0.22 GB (measured: 216 MB)
# layers 27 blobs = 200 MB measured 0.25 GB
# Pages bundler cache <= 0.05 GB (estimate)
# typical 22 x 82 MB + 1.0 + 0.6 + 0.25 + 0.05 = ~3.7 GB; bound ~4.9 GB.
# Peak ~8 GB: a Conan key bump or bulk lock change leaves the superseded per-lock
# typical 22 x 80 MB + 0.45 + 0.22 + 0.25 + 0.05 = ~2.7 GB; bound ~3.9 GB.
# Peak ~7 GB: a Conan key bump or bulk lock change leaves the superseded per-lock
# entries in place until they age out, and layer blobs stay 7 days unused.
# Measured: unpruned Conan entries (API), BuildKit layers. Partly measured: the prune
# ratio (one project, 25-caching/cpp). Estimated: Maven and Go unions, Pages. After the
# first merge, check the real saved Maven and Go entry sizes (`gh cache list --key`)
# and correct these numbers. PR refs hold nothing.
# Measured on main 2026-10-15 (`gh cache list --key`): Conan 27 entries = 2.16 GB
# (5 superseded after the S14 lock changes), Maven 446 MB, Go 216 MB; 3.46 GB in all.
# Partly measured: the prune ratio (one project, 25-caching/cpp). Estimated: Pages.
# PR refs hold nothing.
# - Hygiene: .github/workflows/cache-cleanup.yml deletes the caches of a PR ref when the
# PR closes; CLAUDE.md ("CI cache budget") has the commands for inspecting and clearing.
#
Expand Down
12 changes: 5 additions & 7 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,11 @@ The repo gets 10 GB of Actions cache. Policy in `examples.yml`: every run restor
`warm-go` jobs, which resolve every project and delete the superseded entry. Conan is one entry per
distinct `conan.lock` (22), pruned of sources, build trees and downloads before it is saved; on a main miss the
builder stage is forced to run so the cache mount is never empty. BuildKit layers are `type=gha,mode=min`.
Steady state on main: typical about 3.7 GB (22 x 82 MB Conan + Maven 1.0 + Go 0.6 + layers 0.25 + Pages 0.05),
bound 4.9 GB, peak about 8 GB when a Conan key bump or bulk lock change leaves superseded per-lock entries and
layer blobs age out after 7 days unused. Measured: unpruned Conan entries, BuildKit layers (27 blobs = 200 MB).
Partly measured: prune ratio (one project). Estimated: Maven <=1.0 GB, Go <=0.6 GB, Pages. After the first merge,
check the real saved Maven and Go entry sizes and correct the numbers (arithmetic in the `examples.yml` comment).
Steady state on main, measured 2026-10-15: Conan 27 entries = 2.16 GB (avg 80 MB; 5 superseded entries
from the S14 lock changes age out after 7 days unused), Maven 446 MB, Go 216 MB, 3.46 GB in all. Typical about
2.7 GB (22 x 80 MB Conan + Maven 0.45 + Go 0.22 + layers 0.25 + Pages 0.05), bound 3.9 GB (22 x 135 MB Conan),
peak about 7 GB when a Conan key bump or bulk lock change leaves superseded per-lock entries and layer blobs
age out after 7 days unused. Arithmetic in the `examples.yml` comment.
`cache-cleanup.yml` drops a PR ref's caches when the PR closes (same-repo PRs only).

Check usage with `gh api repos/patterncatalyst/cloud-native-design-patterns/actions/cache/usage`. Drop one PR's
Expand Down Expand Up @@ -153,8 +153,6 @@ Do not use `gh cache delete --all`: it also removes the entries the current poli
(cppgraphqlgen needs 3.x), lua 5.4.8 (sol2), librdkafka 2.14.2 and opentelemetry-cpp 1.26.0 (ConanCenter
behind upstream). flex and bison get `MAKEINFO=true` through a scoped Conan conf, not a fake binary.
The Conan cache mount id is `cndp-conan2`; CI persists it with buildkit-cache-dance.
- ⚠️ Reconcile: the r76 outbox codetab in `_docs/05-event-driven.md` used `pqxx` for
brevity; it now shows libpq, as the example does.
- **JVM / .NET / Python** (as used in the site codetabs): Spring Boot (Spring Kafka,
`spring-boot-starter-websocket`, Kafka Streams); Quarkus (`websockets-next`, SmallRye
Reactive Messaging, Kafka Streams); .NET 10.0.12 (**Confluent.Kafka** 2.16.0 for Kafka —
Expand Down
8 changes: 4 additions & 4 deletions _plans/s13-idiomatic-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,8 @@ and Kafka payload drift (DTOs only, compare with kcat); idempotent consumers und
and start time against compose `--wait` and the 05 k8s limits; deck `expect` counts (measure on committed decks);
Python lock drift (diff `uv export` against the old pins); long matrix runs.

## Not re-run
## Re-run after S14

Example 05 on minikube (Appendix R) and OpenShift Local (Appendix S) was not repeated after S13 (D7). Its
Quarkus, Spring Boot and .NET services changed (ORMs, health endpoints), so those two footers describe the
pre-S13 code; the deploy scripts accept the new `"UP"` health bodies.
Example 05 on minikube (Appendix R) and OpenShift Local (Appendix S) was not repeated during S13 (D7). It was
re-run on the S13/S14 code on 2026-10-13 (PR #84): minikube 6/6 and OpenShift Local 5/5 languages, 10/10 checks
each, and both footers now describe the current code.
Loading