fix: suppress context canceled logs
This commit is contained in:
@@ -46,7 +46,9 @@ func (h *Handler) HandleCatalog(w http.ResponseWriter, r *http.Request) {
|
|||||||
"User": user,
|
"User": user,
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,7 +75,9 @@ func (h *Handler) renderCatalogSection(w http.ResponseWriter, r *http.Request, s
|
|||||||
|
|
||||||
data, err := h.service.GetCatalogSection(r.Context(), userID, section)
|
data, err := h.service.GetCatalogSection(r.Context(), userID, section)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("catalog %s error: %v", section, err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("catalog %s error: %v", section, err)
|
||||||
|
}
|
||||||
if section != "Continue" {
|
if section != "Continue" {
|
||||||
writeInlineLoadError(w, "Failed to load "+section)
|
writeInlineLoadError(w, "Failed to load "+section)
|
||||||
}
|
}
|
||||||
@@ -85,7 +89,9 @@ func (h *Handler) renderCatalogSection(w http.ResponseWriter, r *http.Request, s
|
|||||||
|
|
||||||
// render section as htmx partial, not full page
|
// render section as htmx partial, not full page
|
||||||
if err := templates.GetRenderer().ExecuteFragment(r.Context(), w, "index.gohtml", "catalog_section", data); err != nil {
|
if err := templates.GetRenderer().ExecuteFragment(r.Context(), w, "index.gohtml", "catalog_section", data); err != nil {
|
||||||
log.Printf("fragment render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("fragment render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +102,9 @@ func (h *Handler) HandleDiscover(w http.ResponseWriter, r *http.Request) {
|
|||||||
"User": user,
|
"User": user,
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,7 +130,9 @@ func (h *Handler) renderDiscoverSection(w http.ResponseWriter, r *http.Request,
|
|||||||
|
|
||||||
data, err := h.service.GetDiscoverSection(r.Context(), userID, section)
|
data, err := h.service.GetDiscoverSection(r.Context(), userID, section)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("discover %s error: %v", section, err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("discover %s error: %v", section, err)
|
||||||
|
}
|
||||||
writeInlineLoadError(w, "Failed to load "+section)
|
writeInlineLoadError(w, "Failed to load "+section)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -131,7 +141,9 @@ func (h *Handler) renderDiscoverSection(w http.ResponseWriter, r *http.Request,
|
|||||||
data["Section"] = section
|
data["Section"] = section
|
||||||
|
|
||||||
if err := templates.GetRenderer().ExecuteFragment(r.Context(), w, "discover.gohtml", "discover_section", data); err != nil {
|
if err := templates.GetRenderer().ExecuteFragment(r.Context(), w, "discover.gohtml", "discover_section", data); err != nil {
|
||||||
log.Printf("fragment render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("fragment render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,7 +334,9 @@ func (h *Handler) HandleAnimeDetails(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := g.Wait(); err != nil {
|
if err := g.Wait(); err != nil {
|
||||||
log.Printf("anime details fetch error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("anime details fetch error: %v", err)
|
||||||
|
}
|
||||||
renderNotFoundPage(r, w)
|
renderNotFoundPage(r, w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -335,7 +349,9 @@ func (h *Handler) HandleAnimeDetails(w http.ResponseWriter, r *http.Request) {
|
|||||||
"WatchlistIDs": watchlistIDs,
|
"WatchlistIDs": watchlistIDs,
|
||||||
"EpisodesCount": episodesCount,
|
"EpisodesCount": episodesCount,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -357,7 +373,9 @@ func (h *Handler) renderAnimeDetailsSection(w http.ResponseWriter, r *http.Reque
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("anime details %s error: %v", section, err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("anime details %s error: %v", section, err)
|
||||||
|
}
|
||||||
writeInlineLoadError(w, "Failed to load "+section)
|
writeInlineLoadError(w, "Failed to load "+section)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -369,7 +387,9 @@ func (h *Handler) renderAnimeDetailsSection(w http.ResponseWriter, r *http.Reque
|
|||||||
|
|
||||||
// render htmx partial for the section
|
// render htmx partial for the section
|
||||||
if err := templates.GetRenderer().ExecuteFragment(ctx, w, "anime.gohtml", tplName, data); err != nil {
|
if err := templates.GetRenderer().ExecuteFragment(ctx, w, "anime.gohtml", tplName, data); err != nil {
|
||||||
log.Printf("fragment render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("fragment render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,7 +403,9 @@ func (h *Handler) HandleHTMLWatchOrder(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
relations, err := h.service.jikanClient.GetFullRelations(r.Context(), id)
|
relations, err := h.service.jikanClient.GetFullRelations(r.Context(), id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("watch order error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("watch order error: %v", err)
|
||||||
|
}
|
||||||
http.Error(w, `<div class="mt-8 text-sm text-red-400">Failed to load watch order.</div>`, http.StatusInternalServerError)
|
http.Error(w, `<div class="mt-8 text-sm text-red-400">Failed to load watch order.</div>`, http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -402,7 +424,9 @@ func (h *Handler) HandleHTMLWatchOrder(w http.ResponseWriter, r *http.Request) {
|
|||||||
"AnimeID": id,
|
"AnimeID": id,
|
||||||
"WatchlistMap": watchlistMap,
|
"WatchlistMap": watchlistMap,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,10 +442,14 @@ func (h *Handler) HandleQuickSearch(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
res, err := h.service.jikanClient.SearchAdvanced(r.Context(), query, "", "", "", "", nil, true, 1, 5)
|
res, err := h.service.jikanClient.SearchAdvanced(r.Context(), query, "", "", "", "", nil, true, 1, 5)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("quick search error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("quick search error: %v", err)
|
||||||
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
if err := writeJSON(w, []quickSearchResult{}); err != nil {
|
if err := writeJSON(w, []quickSearchResult{}); err != nil {
|
||||||
log.Printf("quick search encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("quick search encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -436,7 +464,9 @@ func (h *Handler) HandleQuickSearch(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
if err := writeJSON(w, output); err != nil {
|
if err := writeJSON(w, output); err != nil {
|
||||||
log.Printf("quick search encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("quick search encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,10 +475,14 @@ func (h *Handler) HandleRandomAnime(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
anime, err := h.service.jikanClient.GetRandomAnime(r.Context())
|
anime, err := h.service.jikanClient.GetRandomAnime(r.Context())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("random anime error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("random anime error: %v", err)
|
||||||
|
}
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
if err := writeJSON(w, map[string]string{"error": "Failed to fetch random anime"}); err != nil {
|
if err := writeJSON(w, map[string]string{"error": "Failed to fetch random anime"}); err != nil {
|
||||||
log.Printf("random anime encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("random anime encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -456,14 +490,18 @@ func (h *Handler) HandleRandomAnime(w http.ResponseWriter, r *http.Request) {
|
|||||||
if anime.MalID == 0 {
|
if anime.MalID == 0 {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
if err := writeJSON(w, map[string]string{"error": "No anime found"}); err != nil {
|
if err := writeJSON(w, map[string]string{"error": "No anime found"}); err != nil {
|
||||||
log.Printf("random anime encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("random anime encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
if err := writeJSON(w, map[string]any{"data": anime}); err != nil {
|
if err := writeJSON(w, map[string]any{"data": anime}); err != nil {
|
||||||
log.Printf("random anime encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("random anime encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,7 +514,9 @@ func renderNotFoundPage(r *http.Request, w http.ResponseWriter) {
|
|||||||
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package auth
|
package auth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
@@ -20,7 +22,9 @@ func (h *Handler) HandleLoginPage(w http.ResponseWriter, r *http.Request) {
|
|||||||
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "login.gohtml", map[string]any{
|
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "login.gohtml", map[string]any{
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +36,9 @@ func (h *Handler) HandleLogin(w http.ResponseWriter, r *http.Request) {
|
|||||||
"Username": "",
|
"Username": "",
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -46,7 +52,9 @@ func (h *Handler) HandleLogin(w http.ResponseWriter, r *http.Request) {
|
|||||||
"Username": username,
|
"Username": username,
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -58,7 +66,9 @@ func (h *Handler) HandleLogin(w http.ResponseWriter, r *http.Request) {
|
|||||||
"Username": username,
|
"Username": username,
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package playback
|
package playback
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
@@ -33,7 +35,9 @@ func renderNotFoundPage(r *http.Request, w http.ResponseWriter) {
|
|||||||
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +208,9 @@ func (h *Handler) HandleWatchPage(w http.ResponseWriter, r *http.Request) {
|
|||||||
"WatchlistStatus": watchlistStatus,
|
"WatchlistStatus": watchlistStatus,
|
||||||
"Seasons": allSeasons,
|
"Seasons": allSeasons,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,7 +407,9 @@ func (h *Handler) HandleEpisodeData(w http.ResponseWriter, r *http.Request) {
|
|||||||
"segments": watchData.Segments,
|
"segments": watchData.Segments,
|
||||||
"episode_title": "", // Find episode title if possible
|
"episode_title": "", // Find episode title if possible
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("watch page encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("watch page encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,7 +470,9 @@ func (h *Handler) HandleEpisodeThumbnails(w http.ResponseWriter, r *http.Request
|
|||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
if err := writeJSON(w, results); err != nil {
|
if err := writeJSON(w, results); err != nil {
|
||||||
log.Printf("thumbnails encode error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("thumbnails encode error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package watchlist
|
package watchlist
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -120,7 +122,9 @@ func (h *Handler) HandleGetWatchlist(w http.ResponseWriter, r *http.Request) {
|
|||||||
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, "not_found.gohtml", map[string]any{
|
||||||
"CurrentPath": r.URL.Path,
|
"CurrentPath": r.URL.Path,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -163,6 +167,8 @@ func (h *Handler) HandleGetWatchlist(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, templateName, data); err != nil {
|
if err := templates.GetRenderer().ExecuteTemplate(r.Context(), w, templateName, data); err != nil {
|
||||||
log.Printf("render error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("render error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -272,7 +272,9 @@ func (c *Client) getWithCache(ctx context.Context, cacheKey string, ttl time.Dur
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Printf("jikan: stale cache unmarshal failed or empty, falling back to error: %v", err)
|
if !errors.Is(err, context.Canceled) {
|
||||||
|
log.Printf("jikan: stale cache unmarshal failed or empty, falling back to error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user