internal/store: rename from state
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m9s
Test / Hakurei (push) Successful in 3m8s
Test / Hpkg (push) Successful in 4m2s
Test / Sandbox (race detector) (push) Successful in 4m7s
Test / Hakurei (race detector) (push) Successful in 4m55s
Test / Flake checks (push) Successful in 1m25s

This reduces collision with local variable names, and generally makes sense for the new store package, since it no longer specifies the state struct.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
Ophestra 2025-10-30 18:43:55 +09:00
parent 46c5ce4936
commit ebdcff1049
Signed by: cat
SSH Key Fingerprint: SHA256:gQ67O0enBZ7UdZypgtspB2FDM1g3GVw8nX0XSdcFw8Q
16 changed files with 34 additions and 35 deletions

View File

@ -20,7 +20,7 @@ import (
"hakurei.app/internal" "hakurei.app/internal"
"hakurei.app/internal/env" "hakurei.app/internal/env"
"hakurei.app/internal/outcome" "hakurei.app/internal/outcome"
"hakurei.app/internal/state" "hakurei.app/internal/store"
"hakurei.app/message" "hakurei.app/message"
"hakurei.app/system/dbus" "hakurei.app/system/dbus"
) )
@ -322,7 +322,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr
c.NewCommand("ps", "List active instances", func(args []string) error { c.NewCommand("ps", "List active instances", func(args []string) error {
var sc hst.Paths var sc hst.Paths
env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil)) env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil))
printPs(os.Stdout, time.Now().UTC(), state.NewMulti(msg, sc.RunDirPath), flagShort, flagJSON) printPs(os.Stdout, time.Now().UTC(), store.NewMulti(msg, sc.RunDirPath), flagShort, flagJSON)
return errSuccess return errSuccess
}).Flag(&flagShort, "short", command.BoolFlag(false), "Print instance id") }).Flag(&flagShort, "short", command.BoolFlag(false), "Print instance id")
} }

View File

@ -13,7 +13,7 @@ import (
"hakurei.app/hst" "hakurei.app/hst"
"hakurei.app/internal/env" "hakurei.app/internal/env"
"hakurei.app/internal/outcome" "hakurei.app/internal/outcome"
"hakurei.app/internal/state" "hakurei.app/internal/store"
"hakurei.app/message" "hakurei.app/message"
) )
@ -85,8 +85,8 @@ func tryIdentifier(msg message.Msg, name string) (config *hst.Config, entry *hst
return tryIdentifierEntries(msg, name, func() map[hst.ID]*hst.State { return tryIdentifierEntries(msg, name, func() map[hst.ID]*hst.State {
var sc hst.Paths var sc hst.Paths
env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil)) env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil))
s := state.NewMulti(msg, sc.RunDirPath) s := store.NewMulti(msg, sc.RunDirPath)
if entries, err := state.Join(s); err != nil { if entries, err := store.Join(s); err != nil {
msg.GetLogger().Printf("cannot join store: %v", err) // not fatal msg.GetLogger().Printf("cannot join store: %v", err) // not fatal
return nil return nil
} else { } else {

View File

@ -14,7 +14,7 @@ import (
"hakurei.app/internal" "hakurei.app/internal"
"hakurei.app/internal/env" "hakurei.app/internal/env"
"hakurei.app/internal/outcome" "hakurei.app/internal/outcome"
"hakurei.app/internal/state" "hakurei.app/internal/store"
"hakurei.app/message" "hakurei.app/message"
) )
@ -168,9 +168,9 @@ func printShowInstance(
} }
// printPs writes a representation of active instances to output. // printPs writes a representation of active instances to output.
func printPs(output io.Writer, now time.Time, s state.Store, short, flagJSON bool) { func printPs(output io.Writer, now time.Time, s store.Store, short, flagJSON bool) {
var entries map[hst.ID]*hst.State var entries map[hst.ID]*hst.State
if e, err := state.Join(s); err != nil { if e, err := store.Join(s); err != nil {
log.Fatalf("cannot join store: %v", err) log.Fatalf("cannot join store: %v", err)
} else { } else {
entries = e entries = e

View File

@ -6,7 +6,7 @@ import (
"time" "time"
"hakurei.app/hst" "hakurei.app/hst"
"hakurei.app/internal/state" "hakurei.app/internal/store"
) )
var ( var (
@ -709,6 +709,6 @@ func TestPrintPs(t *testing.T) {
type stubStore map[hst.ID]*hst.State type stubStore map[hst.ID]*hst.State
func (s stubStore) Join() (map[hst.ID]*hst.State, error) { return s, nil } func (s stubStore) Join() (map[hst.ID]*hst.State, error) { return s, nil }
func (s stubStore) Do(int, func(c state.Cursor)) (bool, error) { panic("unreachable") } func (s stubStore) Do(int, func(c store.Cursor)) (bool, error) { panic("unreachable") }
func (s stubStore) List() ([]int, error) { panic("unreachable") } func (s stubStore) List() ([]int, error) { panic("unreachable") }
func (s stubStore) Close() error { return nil } func (s stubStore) Close() error { return nil }

View File

@ -15,7 +15,7 @@ import (
"hakurei.app/container/fhs" "hakurei.app/container/fhs"
"hakurei.app/hst" "hakurei.app/hst"
"hakurei.app/internal" "hakurei.app/internal"
"hakurei.app/internal/state" "hakurei.app/internal/store"
"hakurei.app/message" "hakurei.app/message"
"hakurei.app/system" "hakurei.app/system"
) )
@ -34,7 +34,7 @@ type mainState struct {
// Time is nil if no process was ever created. // Time is nil if no process was ever created.
Time *time.Time Time *time.Time
store state.Store store store.Store
cancel context.CancelFunc cancel context.CancelFunc
cmd *exec.Cmd cmd *exec.Cmd
cmdWait chan error cmdWait chan error
@ -127,7 +127,7 @@ func (ms mainState) beforeExit(isFault bool) {
} }
if ms.uintptr&mainNeedsRevert != 0 { if ms.uintptr&mainNeedsRevert != 0 {
if ok, err := ms.store.Do(ms.k.state.identity.unwrap(), func(c state.Cursor) { if ok, err := ms.store.Do(ms.k.state.identity.unwrap(), func(c store.Cursor) {
if ms.uintptr&mainNeedsDestroy != 0 { if ms.uintptr&mainNeedsDestroy != 0 {
if err := c.Destroy(ms.k.state.id.unwrap()); err != nil { if err := c.Destroy(ms.k.state.id.unwrap()); err != nil {
perror(err, "destroy state entry") perror(err, "destroy state entry")
@ -220,7 +220,7 @@ func (k *outcome) main(msg message.Msg) {
ms.fatal("cannot commit system setup:", err) ms.fatal("cannot commit system setup:", err)
} }
ms.uintptr |= mainNeedsRevert ms.uintptr |= mainNeedsRevert
ms.store = state.NewMulti(msg, k.state.sc.RunDirPath) ms.store = store.NewMulti(msg, k.state.sc.RunDirPath)
ctx, cancel := context.WithCancel(k.ctx) ctx, cancel := context.WithCancel(k.ctx)
defer cancel() defer cancel()
@ -281,7 +281,7 @@ func (k *outcome) main(msg message.Msg) {
} }
// shim accepted setup payload, create process state // shim accepted setup payload, create process state
if ok, err := ms.store.Do(k.state.identity.unwrap(), func(c state.Cursor) { if ok, err := ms.store.Do(k.state.identity.unwrap(), func(c store.Cursor) {
if err := c.Save(&hst.State{ if err := c.Save(&hst.State{
ID: k.state.id.unwrap(), ID: k.state.id.unwrap(),
PID: os.Getpid(), PID: os.Getpid(),

View File

@ -1,5 +1,4 @@
// Package state provides cross-process state tracking for hakurei container instances. package store
package state
import ( import (
"strconv" "strconv"

View File

@ -1,4 +1,4 @@
package state_test package store_test
import ( import (
"log" "log"
@ -10,12 +10,12 @@ import (
"hakurei.app/container/check" "hakurei.app/container/check"
"hakurei.app/hst" "hakurei.app/hst"
"hakurei.app/internal/state" "hakurei.app/internal/store"
"hakurei.app/message" "hakurei.app/message"
) )
func TestMulti(t *testing.T) { func TestMulti(t *testing.T) {
s := state.NewMulti(message.NewMsg(log.New(log.Writer(), "multi: ", 0)), check.MustAbs(t.TempDir())) s := store.NewMulti(message.NewMsg(log.New(log.Writer(), "multi: ", 0)), check.MustAbs(t.TempDir()))
t.Run("list empty store", func(t *testing.T) { t.Run("list empty store", func(t *testing.T) {
if identities, err := s.List(); err != nil { if identities, err := s.List(); err != nil {
@ -43,14 +43,14 @@ func TestMulti(t *testing.T) {
tc[i].Time = time.Now() tc[i].Time = time.Now()
} }
do := func(identity int, f func(c state.Cursor)) { do := func(identity int, f func(c store.Cursor)) {
if ok, err := s.Do(identity, f); err != nil { if ok, err := s.Do(identity, f); err != nil {
t.Fatalf("Do: ok = %v, error = %v", ok, err) t.Fatalf("Do: ok = %v, error = %v", ok, err)
} }
} }
insert := func(i, identity int) { insert := func(i, identity int) {
do(identity, func(c state.Cursor) { do(identity, func(c store.Cursor) {
if err := c.Save(&tc[i]); err != nil { if err := c.Save(&tc[i]); err != nil {
t.Fatalf("Save: error = %v", err) t.Fatalf("Save: error = %v", err)
} }
@ -58,7 +58,7 @@ func TestMulti(t *testing.T) {
} }
check := func(i, identity int) { check := func(i, identity int) {
do(identity, func(c state.Cursor) { do(identity, func(c store.Cursor) {
if entries, err := c.Load(); err != nil { if entries, err := c.Load(); err != nil {
t.Fatalf("Load: error = %v", err) t.Fatalf("Load: error = %v", err)
} else if got, ok := entries[tc[i].ID]; !ok { } else if got, ok := entries[tc[i].ID]; !ok {
@ -98,19 +98,19 @@ func TestMulti(t *testing.T) {
} }
// join store // join store
if entries, err := state.Join(s); err != nil { if entries, err := store.Join(s); err != nil {
t.Fatalf("Join: error = %v", err) t.Fatalf("Join: error = %v", err)
} else if len(entries) != 3 { } else if len(entries) != 3 {
t.Fatalf("Join(s) = %#v", entries) t.Fatalf("Join(s) = %#v", entries)
} }
// clear identity 1 // clear identity 1
do(1, func(c state.Cursor) { do(1, func(c store.Cursor) {
if err := c.Destroy(tc[insertEntryOtherApp].ID); err != nil { if err := c.Destroy(tc[insertEntryOtherApp].ID); err != nil {
t.Fatalf("Destroy: error = %v", err) t.Fatalf("Destroy: error = %v", err)
} }
}) })
do(1, func(c state.Cursor) { do(1, func(c store.Cursor) {
if l, err := c.Len(); err != nil { if l, err := c.Len(); err != nil {
t.Fatalf("Len: error = %v", err) t.Fatalf("Len: error = %v", err)
} else if l != 0 { } else if l != 0 {

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"encoding/gob" "encoding/gob"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"bytes" "bytes"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"encoding/hex" "encoding/hex"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"bytes" "bytes"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"errors" "errors"

View File

@ -1,4 +1,4 @@
package state package store
import ( import (
"cmp" "cmp"