From 9015baf955c94a806c01b3dcd5648c8e68ad2685 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Wed, 12 Mar 2025 22:39:51 +0100 Subject: refactor: ensure errors have stack traces --- internal/server/dev.go | 6 +++--- internal/server/logging.go | 2 +- internal/server/mux.go | 26 ++++++++++++++------------ internal/server/server.go | 6 +++--- 4 files changed, 21 insertions(+), 19 deletions(-) (limited to 'internal/server') diff --git a/internal/server/dev.go b/internal/server/dev.go index f5fd4fd..89ac069 100644 --- a/internal/server/dev.go +++ b/internal/server/dev.go @@ -8,7 +8,7 @@ import ( "time" "github.com/fsnotify/fsnotify" - "github.com/pkg/errors" + "gitlab.com/tozd/go/errors" "go.alanpearce.eu/x/log" ) @@ -17,7 +17,7 @@ type FileWatcher struct { log *log.Logger } -func NewFileWatcher(log *log.Logger) (*FileWatcher, error) { +func NewFileWatcher(log *log.Logger) (*FileWatcher, errors.E) { watcher, err := fsnotify.NewWatcher() if err != nil { return nil, errors.WithMessage(err, "could not create watcher") @@ -29,7 +29,7 @@ func NewFileWatcher(log *log.Logger) (*FileWatcher, error) { }, nil } -func (i FileWatcher) AddRecursive(from string) error { +func (i FileWatcher) AddRecursive(from string) errors.E { i.log.Debug(fmt.Sprintf("watching files under %s", from)) err := filepath.WalkDir(from, func(path string, entry fs.DirEntry, err error) error { if err != nil { diff --git a/internal/server/logging.go b/internal/server/logging.go index 5930b9d..e11b16f 100644 --- a/internal/server/logging.go +++ b/internal/server/logging.go @@ -3,7 +3,7 @@ package server import ( "net/http" - "github.com/pkg/errors" + "gitlab.com/tozd/go/errors" "go.alanpearce.eu/x/log" ) diff --git a/internal/server/mux.go b/internal/server/mux.go index 37435d4..1507860 100644 --- a/internal/server/mux.go +++ b/internal/server/mux.go @@ -25,7 +25,7 @@ import ( "go.alanpearce.eu/x/log" "github.com/osdevisnot/sorvor/pkg/livereload" - "github.com/pkg/errors" + "gitlab.com/tozd/go/errors" ) type HTTPError struct { @@ -65,7 +65,7 @@ func NewMux( index *search.ReadIndex, log *log.Logger, liveReload bool, -) (*http.ServeMux, error) { +) (*http.ServeMux, errors.E) { if cfg == nil { return nil, errors.New("cfg is nil") } @@ -171,15 +171,16 @@ func NewMux( w.Header().Add("Cache-Control", "max-age=300") w.Header().Add("Vary", "Fetch") + var baseErr error if r.Header.Get("Fetch") == "true" { w.Header().Add("Content-Type", "text/html; charset=utf-8") - err = components.Results(tdata).Render(r.Context(), w) + baseErr = components.Results(tdata).Render(r.Context(), w) } else { - err = components.ResultsPage(tdata).Render(r.Context(), w) + baseErr = components.ResultsPage(tdata).Render(r.Context(), w) } - if err != nil { - log.Error("template error", "template", importerType, "error", err) - errorHandler(w, r, err.Error(), http.StatusInternalServerError) + if baseErr != nil { + log.Error("template error", "template", importerType, "error", baseErr) + errorHandler(w, r, baseErr.Error(), http.StatusInternalServerError) } } else { w.Header().Add("Cache-Control", "max-age=14400") @@ -244,15 +245,16 @@ func NewMux( Sources: sources, Assets: frontend.Assets, } + var baseErr error if r.Header.Get("Fetch") == "true" { w.Header().Add("Content-Type", "text/html; charset=utf-8") - err = components.Detail(*doc).Render(r.Context(), w) + baseErr = components.Detail(*doc).Render(r.Context(), w) } else { - err = components.DetailPage(tdata, *doc).Render(r.Context(), w) + baseErr = components.DetailPage(tdata, *doc).Render(r.Context(), w) } - if err != nil { - log.Error("template error", "template", importerSingular, "error", err) - errorHandler(w, r, err.Error(), http.StatusInternalServerError) + if baseErr != nil { + log.Error("template error", "template", importerSingular, "error", baseErr) + errorHandler(w, r, baseErr.Error(), http.StatusInternalServerError) } } } diff --git a/internal/server/server.go b/internal/server/server.go index aacef30..17d3512 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -11,7 +11,7 @@ import ( "go.alanpearce.eu/searchix/internal/index" "go.alanpearce.eu/x/log" - "github.com/pkg/errors" + "gitlab.com/tozd/go/errors" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" ) @@ -28,7 +28,7 @@ func New( index *index.ReadIndex, log *log.Logger, liveReload bool, -) (*Server, error) { +) (*Server, errors.E) { mux, err := NewMux(conf, index, log, liveReload) if err != nil { return nil, err @@ -49,7 +49,7 @@ func New( }, nil } -func (s *Server) Start() error { +func (s *Server) Start() errors.E { listenAddress := net.JoinHostPort(s.cfg.Web.ListenAddress, strconv.Itoa(s.cfg.Web.Port)) l, err := net.Listen("tcp", listenAddress) if err != nil { -- cgit 1.4.1