From 4829c5e99faa47523a07e2e7dc663f9b757b258c Mon Sep 17 00:00:00 2001 From: lvjiawei Date: Wed, 27 May 2020 13:38:11 +0800 Subject: [PATCH 1/2] Check deletionTimestamp for "kn revision delete" Fixes: #815 --- pkg/serving/v1/client.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/serving/v1/client.go b/pkg/serving/v1/client.go index e2f9765a14..68766cd078 100644 --- a/pkg/serving/v1/client.go +++ b/pkg/serving/v1/client.go @@ -378,6 +378,13 @@ func getBaseRevision(cl KnServingClient, service *servingv1.Service) (*servingv1 // Delete a revision by name func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) error { + revision, err := cl.client.Revisions(cl.namespace).Get(name, v1.GetOptions{}) + if err != nil { + return clienterrors.GetError(err) + } + if revision.GetDeletionTimestamp() != nil { + return fmt.Errorf("can't delete revision %s because it has been marked for deletion", name) + } if timeout == 0 { return cl.deleteRevision(name) } @@ -387,7 +394,7 @@ func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) er err, _ := waitForEvent.Wait(name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback()) waitC <- err }() - err := cl.deleteRevision(name) + err = cl.deleteRevision(name) if err != nil { return clienterrors.GetError(err) } From cd0ed4c132158dc308c61c4c788a93325fb015d6 Mon Sep 17 00:00:00 2001 From: Navid Shaikh Date: Mon, 1 Jun 2020 16:07:25 +0530 Subject: [PATCH 2/2] Update error message for revision delete --- pkg/serving/v1/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/serving/v1/client.go b/pkg/serving/v1/client.go index 68766cd078..cfca0847c9 100644 --- a/pkg/serving/v1/client.go +++ b/pkg/serving/v1/client.go @@ -383,7 +383,7 @@ func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) er return clienterrors.GetError(err) } if revision.GetDeletionTimestamp() != nil { - return fmt.Errorf("can't delete revision %s because it has been marked for deletion", name) + return fmt.Errorf("can't delete revision '%s' because it has been already marked for deletion", name) } if timeout == 0 { return cl.deleteRevision(name)