Skip to content

Commit 7a701de

Browse files
committed
fixup! Merge branch 'main' into colin/drpc-trace
1 parent 49e4e84 commit 7a701de

19 files changed

+471
-309
lines changed

cli/server.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -1185,8 +1185,9 @@ func newProvisionerDaemon(
11851185
return nil, xerrors.Errorf("mkdir %q: %w", cacheDir, err)
11861186
}
11871187

1188+
tracer := coderAPI.TracerProvider.Tracer(tracing.TracerName)
11881189
terraformClient, terraformServer := provisionersdk.MemTransportPipe(&provisionersdk.MemTransportOptions{
1189-
Tracer: coderAPI.TracerProvider.Tracer(tracing.TracerName),
1190+
Tracer: tracer,
11901191
})
11911192
wg.Add(1)
11921193
go func() {
@@ -1206,6 +1207,7 @@ func newProvisionerDaemon(
12061207
},
12071208
CachePath: cacheDir,
12081209
Logger: logger,
1210+
Tracer: tracer,
12091211
})
12101212
if err != nil && !xerrors.Is(err, context.Canceled) {
12111213
select {

coderd/database/dump.sql

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE provisioner_jobs DROP COLUMN metadata;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE provisioner_jobs ADD COLUMN metadata jsonb;

coderd/database/models.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

+14-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerjobs.sql

+3-2
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,11 @@ INSERT INTO
6363
file_id,
6464
"type",
6565
"input",
66-
tags
66+
tags,
67+
metadata
6768
)
6869
VALUES
69-
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING *;
70+
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) RETURNING *;
7071

7172
-- name: UpdateProvisionerJobByID :exec
7273
UPDATE

coderd/provisionerdserver/provisionerdserver.go

+10
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,22 @@ func (server *Server) AcquireJob(ctx context.Context, _ *proto.Empty) (*proto.Ac
129129
return nil, failJob(fmt.Sprintf("get user: %s", err))
130130
}
131131

132+
jobMetadata := map[string]string{}
133+
if job.Metadata.Valid {
134+
err := json.Unmarshal(job.Metadata.RawMessage, &jobMetadata)
135+
if err != nil {
136+
return nil, failJob(fmt.Sprintf("unmarshal metadata: %s", err))
137+
}
138+
}
139+
132140
protoJob := &proto.AcquiredJob{
133141
JobId: job.ID.String(),
134142
CreatedAt: job.CreatedAt.UnixMilli(),
135143
Provisioner: string(job.Provisioner),
136144
UserName: user.Username,
145+
Metadata: jobMetadata,
137146
}
147+
138148
switch job.Type {
139149
case database.ProvisionerJobTypeWorkspaceBuild:
140150
var input WorkspaceProvisionJob

coderd/templateversions.go

+23
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/go-chi/chi/v5"
1414
"github.com/google/uuid"
1515
"github.com/moby/moby/pkg/namesgenerator"
16+
"github.com/tabbed/pqtype"
1617
"golang.org/x/xerrors"
1718

1819
"cdr.dev/slog"
@@ -25,6 +26,7 @@ import (
2526
"github.com/coder/coder/coderd/parameter"
2627
"github.com/coder/coder/coderd/provisionerdserver"
2728
"github.com/coder/coder/coderd/rbac"
29+
"github.com/coder/coder/coderd/tracing"
2830
"github.com/coder/coder/codersdk"
2931
"github.com/coder/coder/examples"
3032
sdkproto "github.com/coder/coder/provisionersdk/proto"
@@ -574,6 +576,15 @@ func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Reques
574576
return
575577
}
576578

579+
metadataRaw, err := json.Marshal(tracing.MetadataFromContext(ctx))
580+
if err != nil {
581+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
582+
Message: "Internal error unmarshalling metadata.",
583+
Detail: err.Error(),
584+
})
585+
return
586+
}
587+
577588
// Create a dry-run job
578589
jobID := uuid.New()
579590
provisionerJob, err := api.Database.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
@@ -589,6 +600,10 @@ func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Reques
589600
Input: input,
590601
// Copy tags from the previous run.
591602
Tags: job.Tags,
603+
Metadata: pqtype.NullRawMessage{
604+
Valid: true,
605+
RawMessage: metadataRaw,
606+
},
592607
})
593608
if err != nil {
594609
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
@@ -1408,6 +1423,10 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
14081423
if err != nil {
14091424
return xerrors.Errorf("marshal job input: %w", err)
14101425
}
1426+
metadataRaw, err := json.Marshal(tracing.MetadataFromContext(ctx))
1427+
if err != nil {
1428+
return xerrors.Errorf("marshal job metadata: %w", err)
1429+
}
14111430

14121431
provisionerJob, err = tx.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
14131432
ID: jobID,
@@ -1421,6 +1440,10 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
14211440
Type: database.ProvisionerJobTypeTemplateVersionImport,
14221441
Input: jobInput,
14231442
Tags: tags,
1443+
Metadata: pqtype.NullRawMessage{
1444+
Valid: true,
1445+
RawMessage: metadataRaw,
1446+
},
14241447
})
14251448
if err != nil {
14261449
return xerrors.Errorf("insert provisioner job: %w", err)

coderd/tracing/util.go

+12
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"runtime"
66
"strings"
77

8+
"go.opentelemetry.io/otel"
9+
"go.opentelemetry.io/otel/propagation"
810
"go.opentelemetry.io/otel/trace"
911
)
1012

@@ -41,3 +43,13 @@ func RunWithoutSpan(ctx context.Context, fn func(ctx context.Context)) {
4143
ctx = trace.ContextWithSpan(ctx, NoopSpan)
4244
fn(ctx)
4345
}
46+
47+
func MetadataFromContext(ctx context.Context) map[string]string {
48+
metadata := make(map[string]string)
49+
otel.GetTextMapPropagator().Inject(ctx, propagation.MapCarrier(metadata))
50+
return metadata
51+
}
52+
53+
func MetadataToContext(ctx context.Context, metadata map[string]string) context.Context {
54+
return otel.GetTextMapPropagator().Extract(ctx, propagation.MapCarrier(metadata))
55+
}

coderd/workspacebuilds.go

+11
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212

1313
"github.com/go-chi/chi/v5"
1414
"github.com/google/uuid"
15+
"github.com/tabbed/pqtype"
1516
"golang.org/x/exp/slices"
1617
"golang.org/x/xerrors"
1718

@@ -21,6 +22,7 @@ import (
2122
"github.com/coder/coder/coderd/httpmw"
2223
"github.com/coder/coder/coderd/provisionerdserver"
2324
"github.com/coder/coder/coderd/rbac"
25+
"github.com/coder/coder/coderd/tracing"
2426
"github.com/coder/coder/codersdk"
2527
)
2628

@@ -605,6 +607,11 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
605607
if err != nil {
606608
return xerrors.Errorf("marshal provision job: %w", err)
607609
}
610+
metadataRaw, err := json.Marshal(tracing.MetadataFromContext(ctx))
611+
if err != nil {
612+
return xerrors.Errorf("marshal metadata: %w", err)
613+
}
614+
608615
provisionerJob, err = db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
609616
ID: uuid.New(),
610617
CreatedAt: database.Now(),
@@ -617,6 +624,10 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
617624
FileID: templateVersionJob.FileID,
618625
Input: input,
619626
Tags: tags,
627+
Metadata: pqtype.NullRawMessage{
628+
Valid: true,
629+
RawMessage: metadataRaw,
630+
},
620631
})
621632
if err != nil {
622633
return xerrors.Errorf("insert provisioner job: %w", err)

coderd/workspaces.go

+10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"github.com/go-chi/chi/v5"
1515
"github.com/google/uuid"
16+
"github.com/tabbed/pqtype"
1617
"golang.org/x/xerrors"
1718

1819
"cdr.dev/slog"
@@ -25,6 +26,7 @@ import (
2526
"github.com/coder/coder/coderd/schedule"
2627
"github.com/coder/coder/coderd/searchquery"
2728
"github.com/coder/coder/coderd/telemetry"
29+
"github.com/coder/coder/coderd/tracing"
2830
"github.com/coder/coder/coderd/util/ptr"
2931
"github.com/coder/coder/codersdk"
3032
)
@@ -514,6 +516,10 @@ func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Req
514516
if err != nil {
515517
return xerrors.Errorf("marshal provision job: %w", err)
516518
}
519+
metadataRaw, err := json.Marshal(tracing.MetadataFromContext(ctx))
520+
if err != nil {
521+
return xerrors.Errorf("marshal metadata: %w", err)
522+
}
517523
provisionerJob, err = db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
518524
ID: uuid.New(),
519525
CreatedAt: now,
@@ -526,6 +532,10 @@ func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Req
526532
FileID: templateVersionJob.FileID,
527533
Input: input,
528534
Tags: tags,
535+
Metadata: pqtype.NullRawMessage{
536+
Valid: true,
537+
RawMessage: metadataRaw,
538+
},
529539
})
530540
if err != nil {
531541
return xerrors.Errorf("insert provisioner job: %w", err)

0 commit comments

Comments
 (0)