Maven remote cache fill emits no storage-accounting deltas
Summary
The Maven remote cache fill emits no storage-accounting counter deltas.
internal/format/maven/remote_store.go and remote_artifact.go write maven_remote_versions and maven_remote_files rows plus their blobs, and nothing in those paths references internal/accounting.
Which counters go stale, and which do not
A cache fill creates remote version rows and, for bytes new to the namespace, blob_storage_blobs rows. Every one of the four recomputes reads that source:
| Counter | On a cache fill | Why |
|---|---|---|
repositories.artifacts_count |
Stale, too low | The remote version walk counts live rows of the repository, and the fill inserts them |
repositories.size_bytes |
Stale, too low | The remote size walk sums distinct blob sizes over the remote file table |
namespace_statistics.components_count |
Stale, too low | Six bare row counts, the remote version tables among them, under no predicate |
namespace_statistics.deduplicated_size_bytes |
Stale, too low | The by-namespace shadow trigger fires on every blob_storage_blobs insert, cache-filled blobs included |
All four read low until a reconciliation pass corrects them, so the cost is timeliness between passes rather than a value that never arrives. That is the same framing the management-delete emit sites use.
Why this is filed separately from the eviction gap
#775 covers the npm and Maven remote eviction arms, which remove rows. This is the fill arm, which creates them, and it has no record anywhere: no work item, and no comment in the fill path naming the obligation.
One decision this depends on
#437 asks whether remote-cache footprint is a billable dimension at all, and defers the call to S24. The recomputes count remote rows today, so the counting is deliberate and this issue only closes the gap between the fast path and that existing behaviour. If #437 rules the footprint out, the exclusion belongs in the recompute rather than here, and this issue changes shape.
Done when
The fill path emits its four deltas post-commit, and a reconciliation pass over a freshly filled repository moves no counter.