v0.15.5 Migration Guide

Runs-Store Schema 5 to 6Section anchor link

The runs-store schema moves from 5 to 6. Schema 6 adds concurrency_holders.queue_arrived_at, which admission state uses to report when a promoted holder originally entered the queue.

No manual SQL step is required. The store migrates automatically the first time a v0.15.5 binary opens the database. Because the migration changes the shared runs-store schema, upgrade every Sparkwing binary that points at the same state database before running mixed admission workloads.

If an older binary opens a database already migrated to schema 6, it refuses to start with a schema-skew error. Roll that binary forward to v0.15.5 or restore a schema-5 database snapshot for that binary.

Concurrency State Struct LiteralsSection anchor link

store.ConcurrencyHolder and client.WaiterHolder gained queue-arrival fields. Callers using unkeyed literals for either exported struct must switch to keyed literals before upgrading.

Before:

holder := store.ConcurrencyHolder{"box", "run/node", "run", "node", claimedAt, leaseExpiresAt, false, 1, 1}

After:

holder := store.ConcurrencyHolder{
    Key:              "box",
    HolderID:         "run/node",
    RunID:            "run",
    NodeID:           "node",
    ClaimedAt:        claimedAt,
    LeaseExpiresAt:   leaseExpiresAt,
    Cost:             1,
    DeclaredCapacity: 1,
}

For controller clients, WaiterHolder.QueueArrivedAt is nil for holders that were admitted immediately and populated for holders promoted from a queue.