all repos — homestead @ 3f8cb5cf6c5eef3401f8628bd7b3c2956a60eea5

Code for my website

fetcher: rely on "latest" symlink as fallback

Alan Pearce
commit

3f8cb5cf6c5eef3401f8628bd7b3c2956a60eea5

parent

f0db45107699eb1294f6d64cbf2ddd48783f7cc0

2 files changed, 14 insertions(+), 9 deletions(-)

changed files
M domain/content/fetcher/fetcher.godomain/content/fetcher/fetcher.go
@@ -77,7 +77,9 @@ err,
fmsg.With(fmt.Sprintf("could not parse numeric filename %s", name)), ) } - if v < f.current-1 { + if f.current > 1 && v < f.current-1 { + f.log.Info("cleaning old revision", "version", v) + err := os.RemoveAll(filepath.Join(f.options.Root, name)) if err != nil { return fault.Wrap(err, fmsg.With("could not remove folder"))
@@ -201,6 +203,10 @@ }()
} func (f *Fetcher) makeURL(runID, basename string) string { + if runID == "1" { + runID = "latest" + } + return f.options.FetchURL.JoinPath(runID, basename).String() }
@@ -271,11 +277,11 @@
func (f *Fetcher) getCurrentVersion() (uint64, error) { target, err := os.Readlink(filepath.Join(f.options.Root, "current")) if err != nil && errors.Is(err, fs.ErrNotExist) { - return 0, fault.Wrap(err, fmsg.With("could not stat current link")) + return 1, fault.Wrap(err, fmsg.With("could not stat current link")) } f.current, err = strconv.ParseUint(target, 10, 64) if err != nil { - return 0, fault.Wrap( + return 1, fault.Wrap( err, fmsg.With(fmt.Sprintf("unexpected symlink target (current -> %s)", target)), )
@@ -293,7 +299,7 @@
f.log.Debug("versions", "current", f.current, "latest", latest) defer f.cleanOldRevisionsAsync() - if latest > f.current { + if f.current >= 1 || latest > f.current { err = f.getArtefacts(latest) if err != nil { return latest, fault.Wrap(err, fmsg.With("could not fetch artefacts"))
M shared/events/redis.goshared/events/redis.go
@@ -31,9 +31,8 @@ log *log.Logger
} const ( - db = 0 - key = "run_id" - fallbackRunID uint64 = 210 + db = 0 + key = "run_id" ) func (l *Logger) Printf(_ context.Context, format string, v ...any) {
@@ -77,12 +76,12 @@ defer cancel()
payload, err := rl.client.Get(ctx, key).Result() if err != nil { - return fallbackRunID, fault.Wrap(err, fmsg.With("could not get latest run ID")) + return 1, fault.Wrap(err, fmsg.With("could not get latest run ID")) } runID, err := strconv.ParseUint(payload, 10, 64) if err != nil { - return fallbackRunID, fault.Wrap(err, fmsg.With("could not parse latest run ID")) + return 1, fault.Wrap(err, fmsg.With("could not parse latest run ID")) } rl.log.Debug("redis response", "payload", payload, "run_id", runID)