From 7cc0171534b6d883185cd00e8b31ebd62699fb7b Mon Sep 17 00:00:00 2001 From: Pavel Tumik <18602811+sagor999@users.noreply.github.com> Date: Tue, 9 Aug 2022 19:57:13 +0000 Subject: [PATCH 1/2] [ws-manager] remove hack that was disabling PVC feature --- components/ws-manager/pkg/manager/create.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/components/ws-manager/pkg/manager/create.go b/components/ws-manager/pkg/manager/create.go index b40230d8552dbd..213e77dbcc9ae5 100644 --- a/components/ws-manager/pkg/manager/create.go +++ b/components/ws-manager/pkg/manager/create.go @@ -30,7 +30,6 @@ import ( "github.com/gitpod-io/gitpod/common-go/kubernetes" wsk8s "github.com/gitpod-io/gitpod/common-go/kubernetes" - "github.com/gitpod-io/gitpod/common-go/log" "github.com/gitpod-io/gitpod/common-go/tracing" "github.com/gitpod-io/gitpod/common-go/util" csapi "github.com/gitpod-io/gitpod/content-service/api" @@ -559,11 +558,6 @@ func (m *Manager) createDefiniteWorkspacePod(startContext *startWorkspaceContext } ffidx[feature] = struct{}{} - if feature == api.WorkspaceFeatureFlag_PERSISTENT_VOLUME_CLAIM { - log.WithField("request", startContext).Warn("Request with PVC enabled. Skipping feature.") - continue - } - switch feature { case api.WorkspaceFeatureFlag_FULL_WORKSPACE_BACKUP: removeVolume(&pod, workspaceVolumeName) From 2487f02d8147e076b12645575e49d81d05af2f33 Mon Sep 17 00:00:00 2001 From: "Pavel Tumik @ GitPod" <18602811+sagor999@users.noreply.github.com> Date: Thu, 11 Aug 2022 23:51:09 +0100 Subject: [PATCH 2/2] [content-init] fix PVC not starting up from prebuild correctly --- components/content-service/pkg/layer/provider.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/components/content-service/pkg/layer/provider.go b/components/content-service/pkg/layer/provider.go index 69c3139541f5d5..120b360aadd17b 100644 --- a/components/content-service/pkg/layer/provider.go +++ b/components/content-service/pkg/layer/provider.go @@ -178,7 +178,7 @@ func (s *Provider) GetContentLayer(ctx context.Context, owner, workspaceID strin return s.getSnapshotContentLayer(ctx, gis) } if pis := initializer.GetPrebuild(); pis != nil { - l, manifest, err = s.getPrebuildContentLayer(ctx, pis) + l, manifest, err = s.getPrebuildContentLayer(ctx, pis, false) if err != nil { log.WithError(err).WithFields(log.OWI(owner, workspaceID, "")).Warn("cannot initialize from prebuild - falling back to Git") span.LogKV("fallback-to-git", err.Error()) @@ -303,7 +303,7 @@ func (s *Provider) GetContentLayerPVC(ctx context.Context, owner, workspaceID st l = []Layer{*layer} return l, manifest, nil } - l, manifest, err = s.getPrebuildContentLayer(ctx, pis) + l, manifest, err = s.getPrebuildContentLayer(ctx, pis, true) if err != nil { log.WithError(err).WithFields(log.OWI(owner, workspaceID, "")).Warn("cannot initialize from prebuild - falling back to Git") span.LogKV("fallback-to-git", err.Error()) @@ -394,9 +394,10 @@ func (s *Provider) getSnapshotContentLayer(ctx context.Context, sp *csapi.Snapsh return l, manifest, nil } -func (s *Provider) getPrebuildContentLayer(ctx context.Context, pb *csapi.PrebuildInitializer) (l []Layer, manifest *csapi.WorkspaceContentManifest, err error) { +func (s *Provider) getPrebuildContentLayer(ctx context.Context, pb *csapi.PrebuildInitializer, isPVC bool) (l []Layer, manifest *csapi.WorkspaceContentManifest, err error) { span, ctx := tracing.FromContext(ctx, "getPrebuildContentLayer") defer tracing.FinishSpan(span, &err) + span.LogKV("isPVC", isPVC) segs := strings.Split(pb.Prebuild.Snapshot, "@") if len(segs) != 2 { @@ -447,7 +448,12 @@ func (s *Provider) getPrebuildContentLayer(ctx context.Context, pb *csapi.Prebui } } - layer, err := contentDescriptorToLayer(cdesc) + var layer *Layer + if isPVC { + layer, err = contentDescriptorToLayerPVC(cdesc) + } else { + layer, err = contentDescriptorToLayer(cdesc) + } if err != nil { return nil, nil, err }