Rendering: Add logs (#97885)

* Rendering: add logs

* fix tests and lint issues
This commit is contained in:
Agnès Toulet
2024-12-13 09:42:35 +01:00
committed by GitHub
parent 6011cffed7
commit 1c4d30f73c
2 changed files with 26 additions and 16 deletions
+21 -14
View File
@@ -271,6 +271,16 @@ func (rs *RenderingService) Render(ctx context.Context, renderType RenderType, o
}
func (rs *RenderingService) render(ctx context.Context, renderType RenderType, opts Opts, renderKeyProvider renderKeyProvider) (*RenderResult, error) {
if !rs.IsAvailable(ctx) {
rs.log.Warn("Could not render image, no image renderer found/installed. " +
"For image rendering support please install the grafana-image-renderer plugin. " +
"Read more at https://grafana.com/docs/grafana/latest/administration/image_rendering/")
if opts.ErrorRenderUnavailable {
return nil, ErrRenderUnavailable
}
return rs.renderUnavailableImage(), nil
}
if int(atomic.LoadInt32(&rs.inProgressCount)) > opts.ConcurrentLimit {
rs.log.Warn("Could not render image, hit the currency limit", "concurrencyLimit", opts.ConcurrentLimit, "path", opts.Path)
if opts.ErrorConcurrentLimitReached {
@@ -287,15 +297,10 @@ func (rs *RenderingService) render(ctx context.Context, renderType RenderType, o
}, nil
}
if !rs.IsAvailable(ctx) {
rs.log.Warn("Could not render image, no image renderer found/installed. " +
"For image rendering support please install the grafana-image-renderer plugin. " +
"Read more at https://grafana.com/docs/grafana/latest/administration/image_rendering/")
if opts.ErrorRenderUnavailable {
return nil, ErrRenderUnavailable
}
return rs.renderUnavailableImage(), nil
}
defer func() {
metrics.MRenderingQueue.Set(float64(atomic.AddInt32(&rs.inProgressCount, -1)))
}()
metrics.MRenderingQueue.Set(float64(atomic.AddInt32(&rs.inProgressCount, 1)))
if renderType == RenderPDF {
if !rs.features.IsEnabled(ctx, featuremgmt.FlagNewPDFRendering) {
@@ -318,12 +323,14 @@ func (rs *RenderingService) render(ctx context.Context, renderType RenderType, o
defer renderKeyProvider.afterRequest(ctx, opts.AuthOpts, renderKey)
defer func() {
metrics.MRenderingQueue.Set(float64(atomic.AddInt32(&rs.inProgressCount, -1)))
}()
res, err := rs.renderAction(ctx, renderType, renderKey, opts)
if err != nil {
rs.log.Error("Failed to render image", "path", opts.Path, "error", err)
return nil, err
}
rs.log.Debug("Successfully rendered image", "path", opts.Path)
metrics.MRenderingQueue.Set(float64(atomic.AddInt32(&rs.inProgressCount, 1)))
return rs.renderAction(ctx, renderType, renderKey, opts)
return res, nil
}
func (rs *RenderingService) RenderCSV(ctx context.Context, opts CSVOpts, session Session) (*RenderCSVResult, error) {
+5 -2
View File
@@ -121,7 +121,8 @@ func TestRenderLimitImage(t *testing.T) {
rs := RenderingService{
Cfg: &setting.Cfg{
HomePath: path,
HomePath: path,
RendererUrl: "http://localhost:8081/render",
},
inProgressCount: 2,
log: log.New("test"),
@@ -161,7 +162,9 @@ func TestRenderLimitImage(t *testing.T) {
func TestRenderLimitImageError(t *testing.T) {
rs := RenderingService{
Cfg: &setting.Cfg{},
Cfg: &setting.Cfg{
RendererUrl: "http://localhost:8081/render",
},
inProgressCount: 2,
log: log.New("test"),
}