Skip to content

Commit 3aa620e

Browse files
authored
fix: template build panic handling (#1289)
1 parent 2a6c00a commit 3aa620e

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

packages/orchestrator/internal/template/build/builder.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"go.opentelemetry.io/otel"
10+
"go.opentelemetry.io/otel/attribute"
1011
"go.uber.org/zap"
1112
"go.uber.org/zap/zapcore"
1213
"golang.org/x/sync/errgroup"
@@ -32,6 +33,7 @@ import (
3233
"github.com/e2b-dev/infra/packages/shared/pkg/smap"
3334
"github.com/e2b-dev/infra/packages/shared/pkg/storage"
3435
"github.com/e2b-dev/infra/packages/shared/pkg/storage/header"
36+
"github.com/e2b-dev/infra/packages/shared/pkg/telemetry"
3537
)
3638

3739
const progressDelay = 5 * time.Second
@@ -134,6 +136,13 @@ func (b *Builder) Build(ctx context.Context, template storage.TemplateFiles, con
134136
}
135137
}()
136138

139+
defer func() {
140+
if r := recover(); r != nil {
141+
telemetry.ReportCriticalError(ctx, "recovered from panic in template build", nil, attribute.String("panic", fmt.Sprintf("%v", r)), telemetry.WithTemplateID(config.TemplateID), telemetry.WithBuildID(template.BuildID))
142+
e = errors.New("fatal error occurred during template build, please contact us")
143+
}
144+
}()
145+
137146
if isV1Build {
138147
hookedCore, done := writer.NewPostProcessor(progressDelay, logsCore)
139148
defer done()

packages/orchestrator/internal/template/server/create_template.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package server
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67

78
"go.opentelemetry.io/otel/attribute"
@@ -98,7 +99,8 @@ func (s *ServerStore) TemplateCreate(ctx context.Context, templateRequest *templ
9899

99100
defer func() {
100101
if r := recover(); r != nil {
101-
zap.L().Error("recovered from panic in template build", zap.Any("panic", r), logger.WithTemplateID(cfg.TemplateID), logger.WithBuildID(cfg.BuildID))
102+
telemetry.ReportCriticalError(ctx, "recovered from panic in template build handler", nil, attribute.String("panic", fmt.Sprintf("%v", r)), telemetry.WithTemplateID(cfg.TemplateID), telemetry.WithBuildID(cfg.BuildID))
103+
buildInfo.SetFail(builderrors.UnwrapUserError(errors.New("fatal error occurred, please contact us")))
102104
}
103105
}()
104106

0 commit comments

Comments
 (0)