Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdc82ff2

Browse files
committed
chore: implement first part of file streaming
1 parent360aa2f commitdc82ff2

File tree

5 files changed

+75
-7
lines changed

5 files changed

+75
-7
lines changed

‎provisioner/terraform/executor.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@ import (
1919
tfjson"github.com/hashicorp/terraform-json"
2020
"go.opentelemetry.io/otel/attribute"
2121
"golang.org/x/xerrors"
22-
protobuf"google.golang.org/protobuf/proto"
2322

2423
"cdr.dev/slog"
2524

2625
"github.com/coder/coder/v2/coderd/database"
2726
"github.com/coder/coder/v2/coderd/tracing"
28-
"github.com/coder/coder/v2/codersdk/drpcsdk"
2927
"github.com/coder/coder/v2/provisionersdk/proto"
3028
)
3129

@@ -357,10 +355,10 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
357355
ModuleFiles:moduleFiles,
358356
}
359357

360-
ifprotobuf.Size(msg)>drpcsdk.MaxMessageSize {
361-
e.logger.Warn(ctx,"cannot persist terraform modules, message payload too big",slog.F("archive_size",len(msg.ModuleFiles)))
362-
msg.ModuleFiles=nil
363-
}
358+
//if protobuf.Size(msg) > drpcsdk.MaxMessageSize {
359+
//e.logger.Warn(ctx, "cannot persist terraform modules, message payload too big", slog.F("archive_size", len(msg.ModuleFiles)))
360+
//msg.ModuleFiles = nil
361+
//}
364362

365363
returnmsg,nil
366364
}

‎provisioner/terraform/modules.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"golang.org/x/xerrors"
1515

16+
"github.com/coder/coder/v2/coderd/util/xio"
1617
"github.com/coder/coder/v2/provisionersdk/proto"
1718
)
1819

@@ -85,7 +86,11 @@ func GetModulesArchive(root fs.FS) ([]byte, error) {
8586

8687
empty:=true
8788
varb bytes.Buffer
88-
w:=tar.NewWriter(&b)
89+
90+
// Limit to 20MB for now.
91+
// TODO: Determine what a reasonable limit is for modules
92+
lw:=xio.NewLimitWriter(&b,20<<20)
93+
w:=tar.NewWriter(lw)
8994

9095
for_,it:=rangem.Modules {
9196
// Check to make sure that the module is a remote module fetched by
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package provisionerd

‎provisionersdk/proto/dataupload.go

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎provisionersdk/session.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import (
1717
"golang.org/x/xerrors"
1818

1919
"cdr.dev/slog"
20+
"github.com/coder/coder/v2/codersdk/drpcsdk"
21+
22+
protobuf"google.golang.org/protobuf/proto"
2023

2124
"github.com/coder/coder/v2/provisionersdk/proto"
2225
)
@@ -161,6 +164,29 @@ func (s *Session) handleRequests() error {
161164
returnerr
162165
}
163166
resp.Type=&proto.Response_Plan{Plan:complete}
167+
168+
ifprotobuf.Size(resp)>drpcsdk.MaxMessageSize {
169+
// Send the modules over as a stream
170+
s.Logger.Info(s.Context(),"plan response too large, sending modules as stream")
171+
dataUp,chunks:=proto.BytesToDataUpload(complete.ModuleFiles)
172+
173+
complete.ModuleFiles=nil// sent over the stream
174+
resp.Type=&proto.Response_Plan{Plan:complete}
175+
176+
err:=s.stream.Send(&proto.Response{Type:&proto.Response_DataUpload{DataUpload:dataUp}})
177+
iferr!=nil {
178+
complete.Error=fmt.Sprintf("send data upload: %s",err.Error())
179+
}else {
180+
fori,chunk:=rangechunks {
181+
err:=s.stream.Send(&proto.Response{Type:&proto.Response_ChunkPiece{ChunkPiece:chunk}})
182+
iferr!=nil {
183+
complete.Error=fmt.Sprintf("send data piece upload %d/%d: %s",i,dataUp.Chunks,err.Error())
184+
break
185+
}
186+
}
187+
}
188+
}
189+
164190
ifcomplete.Error=="" {
165191
planned=true
166192
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp