chore: panic if a random name cannot be created

If that happens so much will go wrong that there is no point in
continuing to do anything. It simplifies the requirements of the
caller: it may be a function that is assumed to never error.
This commit is contained in:
Earl Warren 2025-08-14 09:41:26 +02:00
parent 41f8b03b79
commit 8944a6ef3f
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
4 changed files with 14 additions and 18 deletions

View file

@ -167,11 +167,7 @@ func (h *Handler) ExternalURL() string {
// The function returns the 32-bit random key which the run will use to identify itself.
func (h *Handler) AddRun(data RunData) (string, error) {
for retries := 0; retries < 3; retries++ {
key, err := common.RandName(4)
if err != nil {
return "", errors.New("Could not generate the run id")
}
key := common.MustRandName(4)
_, loaded := h.runs.LoadOrStore(key, data)
if !loaded {
// The key was unique and added successfully

View file

@ -5,12 +5,21 @@ package common
import (
"crypto/rand"
"encoding/hex"
"fmt"
)
func RandName(size int) (string, error) {
func randName(size int) (string, error) {
randBytes := make([]byte, size)
if _, err := rand.Read(randBytes); err != nil {
return "", err
}
return hex.EncodeToString(randBytes), nil
}
func MustRandName(size int) string {
name, err := randName(size)
if err != nil {
panic(fmt.Errorf("RandName(%d): %v", size, err))
}
return name
}

View file

@ -39,10 +39,7 @@ func (c GoGitActionCache) Fetch(ctx context.Context, cacheDir, url, ref, token s
if err != nil {
return "", err
}
branchName, err := common.RandName(12)
if err != nil {
return "", err
}
branchName := common.MustRandName(12)
var auth transport.AuthMethod
if token != "" {

View file

@ -283,10 +283,7 @@ func (rc *RunContext) startHostEnvironment() common.Executor {
return true
})
cacheDir := rc.ActionCacheDir()
randName, err := common.RandName(8)
if err != nil {
return err
}
randName := common.MustRandName(8)
miscpath := filepath.Join(cacheDir, randName)
actPath := filepath.Join(miscpath, "act")
if err := os.MkdirAll(actPath, 0o777); err != nil {
@ -626,10 +623,7 @@ func (rc *RunContext) sh(ctx context.Context, script string) (stdout, stderr str
env[k] = v
}
base, err := common.RandName(8)
if err != nil {
return "", "", err
}
base := common.MustRandName(8)
name := base + ".sh"
oldStdout, oldStderr := rc.JobContainer.ReplaceLogWriter(hout, herr)
err = rc.JobContainer.Copy(rc.JobContainer.GetActPath(), &container.FileEntry{