cmd/coordinator: don't snapshot in dev mode
In dev mode, we have no GCS storage client, so attempting to write a
snapshot will panic.
For golang/go#48803
Change-Id: Id37264ebd765f914a55acf2fd18274020850331f
Reviewed-on: https://go-review.googlesource.com/c/build/+/353909
Trust: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index 88968e3..f75ed24 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -2557,6 +2557,10 @@
if st.conf.SkipSnapshot {
return nil
}
+ if pool.NewGCEConfiguration().BuildEnv().SnapBucket == "" {
+ // Build environment isn't configured to do snapshots.
+ return nil
+ }
if err := st.cleanForSnapshot(bc); err != nil {
return fmt.Errorf("cleanForSnapshot: %v", err)
}
@@ -2624,7 +2628,15 @@
}
defer tgz.Close()
- wr := pool.NewGCEConfiguration().StorageClient().Bucket(pool.NewGCEConfiguration().BuildEnv().SnapBucket).Object(st.SnapshotObjectName()).NewWriter(ctx)
+ sc := pool.NewGCEConfiguration().StorageClient()
+ if sc == nil {
+ return errors.New("GCE configuration missing storage client")
+ }
+ bucket := pool.NewGCEConfiguration().BuildEnv().SnapBucket
+ if bucket == "" {
+ return errors.New("build environment missing snapshot bucket")
+ }
+ wr := sc.Bucket(bucket).Object(st.SnapshotObjectName()).NewWriter(ctx)
wr.ContentType = "application/octet-stream"
wr.ACL = append(wr.ACL, storage.ACLRule{Entity: storage.AllUsers, Role: storage.RoleReader})
if _, err := io.Copy(wr, tgz); err != nil {