From 8be57c6f09741c18b42844a48ec3dd6f7f910988 Mon Sep 17 00:00:00 2001 From: Johannes Batzill Date: Wed, 17 Jan 2024 19:10:10 +0000 Subject: [PATCH] [MISC] fix repo delete for older repos that failed import (#972) --- app/api/controller/repo/delete.go | 2 - app/api/controller/repo/import_cancel.go | 51 ------------------------ app/api/handler/repo/import_cancel.go | 43 -------------------- job/scheduler.go | 4 ++ 4 files changed, 4 insertions(+), 96 deletions(-) delete mode 100644 app/api/controller/repo/import_cancel.go delete mode 100644 app/api/handler/repo/import_cancel.go diff --git a/app/api/controller/repo/delete.go b/app/api/controller/repo/delete.go index 80f539cd4..acf02a15b 100644 --- a/app/api/controller/repo/delete.go +++ b/app/api/controller/repo/delete.go @@ -52,8 +52,6 @@ func (c *Controller) Delete(ctx context.Context, session *auth.Session, repoRef if err != nil { return fmt.Errorf("failed to cancel repository import") } - - return c.DeleteNoAuth(ctx, session, repo) } return c.DeleteNoAuth(ctx, session, repo) diff --git a/app/api/controller/repo/import_cancel.go b/app/api/controller/repo/import_cancel.go deleted file mode 100644 index a86842e6d..000000000 --- a/app/api/controller/repo/import_cancel.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2023 Harness, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package repo - -import ( - "context" - "fmt" - - apiauth "github.com/harness/gitness/app/api/auth" - "github.com/harness/gitness/app/api/usererror" - "github.com/harness/gitness/app/auth" - "github.com/harness/gitness/types/enum" -) - -// ImportCancel cancels a repository import. -func (c *Controller) ImportCancel(ctx context.Context, - session *auth.Session, - repoRef string, -) error { - // note: can't use c.getRepoCheckAccess because this needs to fetch a repo being imported. - repo, err := c.repoStore.FindByRef(ctx, repoRef) - if err != nil { - return err - } - - if err = apiauth.CheckRepo(ctx, c.authorizer, session, repo, enum.PermissionRepoDelete, false); err != nil { - return err - } - - if !repo.Importing { - return usererror.BadRequest("repository is not being imported") - } - - if err = c.importer.Cancel(ctx, repo); err != nil { - return fmt.Errorf("failed to cancel repository import") - } - - return c.DeleteNoAuth(ctx, session, repo) -} diff --git a/app/api/handler/repo/import_cancel.go b/app/api/handler/repo/import_cancel.go deleted file mode 100644 index 423b222b4..000000000 --- a/app/api/handler/repo/import_cancel.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2023 Harness, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package repo - -import ( - "net/http" - - "github.com/harness/gitness/app/api/controller/repo" - "github.com/harness/gitness/app/api/render" - "github.com/harness/gitness/app/api/request" -) - -func HandleImportCancel(repoCtrl *repo.Controller) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() - session, _ := request.AuthSessionFrom(ctx) - repoRef, err := request.GetRepoRefFromPath(r) - if err != nil { - render.TranslatedUserError(w, err) - return - } - - err = repoCtrl.ImportCancel(ctx, session, repoRef) - if err != nil { - render.TranslatedUserError(w, err) - return - } - - render.DeleteSuccessful(w) - } -} diff --git a/job/scheduler.go b/job/scheduler.go index 554537cea..07389eff0 100644 --- a/job/scheduler.go +++ b/job/scheduler.go @@ -24,6 +24,7 @@ import ( "github.com/harness/gitness/lock" "github.com/harness/gitness/pubsub" + "github.com/harness/gitness/store" "github.com/gorhill/cronexpr" "github.com/rs/zerolog/log" @@ -199,6 +200,9 @@ func (s *Scheduler) CancelJob(ctx context.Context, jobUID string) error { }() job, err := s.store.Find(ctx, jobUID) + if errors.Is(err, store.ErrResourceNotFound) { + return nil // ensure consistent response for completed jobs + } if err != nil { return fmt.Errorf("failed to find job to cancel: %w", err) }