mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-21 08:43:35 +00:00
Feat: support interactive mode to manually skip encountered errors (#5266)
This commit is contained in:
@@ -75,9 +75,6 @@ const (
|
||||
const (
|
||||
// baseWorkflowBackoffWaitTime is the time to wait gc check
|
||||
baseGCBackoffWaitTime = 3000 * time.Millisecond
|
||||
|
||||
// resourceTrackerFinalizer is to delete the resource tracker of the latest app revision.
|
||||
resourceTrackerFinalizer = "app.oam.dev/resource-tracker-finalizer"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -366,18 +363,18 @@ func (r *Reconciler) result(err error) *reconcileResult {
|
||||
// We must delete all resource trackers related to an application through finalizer logic.
|
||||
func (r *Reconciler) handleFinalizers(ctx monitorContext.Context, app *v1beta1.Application, handler *AppHandler) (bool, ctrl.Result, error) {
|
||||
if app.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||
if !meta.FinalizerExists(app, resourceTrackerFinalizer) {
|
||||
if !meta.FinalizerExists(app, oam.FinalizerResourceTracker) {
|
||||
subCtx := ctx.Fork("handle-finalizers", monitorContext.DurationMetric(func(v float64) {
|
||||
metrics.HandleFinalizersDurationHistogram.WithLabelValues("application", "add").Observe(v)
|
||||
}))
|
||||
defer subCtx.Commit("finish add finalizers")
|
||||
meta.AddFinalizer(app, resourceTrackerFinalizer)
|
||||
subCtx.Info("Register new finalizer for application", "finalizer", resourceTrackerFinalizer)
|
||||
meta.AddFinalizer(app, oam.FinalizerResourceTracker)
|
||||
subCtx.Info("Register new finalizer for application", "finalizer", oam.FinalizerResourceTracker)
|
||||
endReconcile := !EnableReconcileLoopReduction
|
||||
return r.result(errors.Wrap(r.Client.Update(ctx, app), errUpdateApplicationFinalizer)).end(endReconcile)
|
||||
}
|
||||
} else {
|
||||
if slices.Contains(app.GetFinalizers(), resourceTrackerFinalizer) {
|
||||
if slices.Contains(app.GetFinalizers(), oam.FinalizerResourceTracker) {
|
||||
subCtx := ctx.Fork("handle-finalizers", monitorContext.DurationMetric(func(v float64) {
|
||||
metrics.HandleFinalizersDurationHistogram.WithLabelValues("application", "remove").Observe(v)
|
||||
}))
|
||||
@@ -391,7 +388,7 @@ func (r *Reconciler) handleFinalizers(ctx monitorContext.Context, app *v1beta1.A
|
||||
return true, result, err
|
||||
}
|
||||
if rootRT == nil && currentRT == nil && len(historyRTs) == 0 && cvRT == nil {
|
||||
meta.RemoveFinalizer(app, resourceTrackerFinalizer)
|
||||
meta.RemoveFinalizer(app, oam.FinalizerResourceTracker)
|
||||
meta.RemoveFinalizer(app, oam.FinalizerOrphanResource)
|
||||
return r.result(errors.Wrap(r.Client.Update(ctx, app), errUpdateApplicationFinalizer)).end(true)
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/oam-dev/kubevela/pkg/oam"
|
||||
"github.com/oam-dev/kubevela/pkg/oam/testutil"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
@@ -117,7 +118,7 @@ var _ = Describe("Test application controller finalizer logic", func() {
|
||||
checkApp = new(v1beta1.Application)
|
||||
Expect(k8sClient.Get(ctx, appKey, checkApp)).Should(BeNil())
|
||||
Expect(len(checkApp.Finalizers)).Should(BeEquivalentTo(1))
|
||||
Expect(checkApp.Finalizers[0]).Should(BeEquivalentTo(resourceTrackerFinalizer))
|
||||
Expect(checkApp.Finalizers[0]).Should(BeEquivalentTo(oam.FinalizerResourceTracker))
|
||||
By("delete this cross workload app")
|
||||
Expect(k8sClient.Delete(ctx, checkApp)).Should(BeNil())
|
||||
By("delete app will delete resourceTracker")
|
||||
@@ -148,7 +149,7 @@ var _ = Describe("Test application controller finalizer logic", func() {
|
||||
checkApp = new(v1beta1.Application)
|
||||
Expect(k8sClient.Get(ctx, appKey, checkApp)).Should(BeNil())
|
||||
Expect(len(checkApp.Finalizers)).Should(BeEquivalentTo(1))
|
||||
Expect(checkApp.Finalizers[0]).Should(BeEquivalentTo(resourceTrackerFinalizer))
|
||||
Expect(checkApp.Finalizers[0]).Should(BeEquivalentTo(oam.FinalizerResourceTracker))
|
||||
Expect(len(rt.Spec.ManagedResources)).Should(BeEquivalentTo(1))
|
||||
By("Update the app, set type to normal-worker")
|
||||
checkApp.Spec.Components[0].Type = "normal-worker"
|
||||
|
||||
Reference in New Issue
Block a user