Add gRPC observability: logging, metrics, recovery interceptors

This commit is contained in:
Alexander
2026-05-06 21:58:24 +02:00
parent 67f46f740b
commit 3249bdc35c
7 changed files with 170 additions and 15 deletions
+25 -3
View File
@@ -3,6 +3,8 @@ package indexer
import (
"encoding/xml"
"github.com/rs/zerolog/log"
pb "homelab.lan/music-agregator/gen/music_agregator/indexer/v1"
"homelab.lan/music-agregator/internal/tracker/rutracker"
)
@@ -46,8 +48,25 @@ var (
func (sr *SearchResult) ToProto() *pb.SearchResponse {
var pbItems []*pb.SearchItem
var skipped int
for _, item := range sr.Items {
release := rutrackerParserFactory.GetParser(item.Categories).Parse(item.Title)
log.Trace().
Str("tracker", item.JackettIndexer.ID).
Str("title", item.Title).
Str("artist", release.Artist).
Str("album", release.Album).
Int("year", release.Year).
Bool("parsed", release.ParsedSuccessfully).
Msg("parsed item")
if !release.ParsedSuccessfully {
skipped++
continue
}
pbAttrs := make([]*pb.TorznabAttr, len(item.TorznabAttrs))
for j, attr := range item.TorznabAttrs {
pbAttrs[j] = &pb.TorznabAttr{
@@ -56,9 +75,6 @@ func (sr *SearchResult) ToProto() *pb.SearchResponse {
}
}
// TODO add the check from what tracker the result is to properly get the parser and thus parse it
release := rutrackerParserFactory.GetParser(item.Categories).Parse(item.Title)
pbItems = append(pbItems, &pb.SearchItem{
Title: item.Title,
DownloadLink: item.Link,
@@ -77,6 +93,12 @@ func (sr *SearchResult) ToProto() *pb.SearchResponse {
})
}
log.Trace().
Int("total", len(sr.Items)).
Int("parsed", len(pbItems)).
Int("skipped", skipped).
Msg("conversion complete")
return &pb.SearchResponse{
Result: pbItems,
}