Raise a check's store without durability and remove what earlier holders left (hq issue 306)
On the control node the store-bound packages of the controller's suite ran five to seven times slower than on any other holder, and every controller check that landed there ran past the suite's thirty minutes: a throwaway store flushing to a disk the mesh's own store, bus and forge keep busy. A store that lives for one check needs no crash safety. A holder recreated mid-check left the check's store and bus running, and the redelivery went to another machine, so nothing removed them: eleven pairs across four machines. A starting holder has taken nothing, so every container labelled with an ask of the seat is an earlier holder's.
This commit is contained in:
@@ -346,7 +346,7 @@ func Check(ctx context.Context, run Runner, spec CheckSpec, workspace, registry
|
||||
}()
|
||||
labelled := Labelled(run, spec.ID)
|
||||
store, err := throwaway(ctx, labelled, run, spec.ID+"-store", StoreImage(f.Versions.Store), 5432,
|
||||
[]string{"-e", "POSTGRES_PASSWORD=check"}, nil)
|
||||
[]string{"-e", "POSTGRES_PASSWORD=check"}, StoreSettings)
|
||||
if err != nil {
|
||||
return CheckVerdict{}, err
|
||||
}
|
||||
@@ -848,6 +848,16 @@ func StoreImage(version string) string {
|
||||
return "postgres:" + major + "-alpine"
|
||||
}
|
||||
|
||||
// StoreSettings are the throwaway store's server settings: **no durability** (novox/hq issue 306). The
|
||||
// store lives for one check and is removed after it, so nothing it writes has to survive a crash —
|
||||
// and a test suite that creates a database per test asks the disk to flush thousands of times. On a
|
||||
// machine whose disk the mesh's own store, bus and forge already keep busy — the control node — each
|
||||
// flush waited its turn: the store-bound packages of the controller's suite ran five to seven times
|
||||
// slower there than on any other holder, while those that touch no store ran alike, and its check ran
|
||||
// past the suite's thirty minutes every time it landed there. The release stays the mesh's; only what
|
||||
// a crash would need is switched off.
|
||||
var StoreSettings = []string{"-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"}
|
||||
|
||||
// BusImage is the bus a check stands on: the release the mesh's bus server runs.
|
||||
func BusImage(version string) string {
|
||||
v := strings.TrimPrefix(strings.TrimSpace(version), "v")
|
||||
|
||||
Reference in New Issue
Block a user