Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BlockBeforeOtherSystemsFinalized = polardbxv1reconcile.NewStepBinder("BlockBeforeOtherSystemsFinalized", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { polardbx := rc.MustGetPolarDBX() if k8shelper.ContainsOnlyFinalizer(polardbx, polardbxmeta.Finalizer) { return flow.Pass() } return flow.Wait("Block, other finalizers detected.") }, )
View Source
var HandleFinalizerForStatelessPods = polardbxv1reconcile.NewStepBinder("HandleFinalizerForStatelessPods", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { cnPods, err := rc.GetPods(polardbxmeta.RoleCN) if err != nil { return flow.Error(err, "Unable to get pods for CN") } cdcPods, err := rc.GetPods(polardbxmeta.RoleCDC) if err != nil { return flow.Error(err, "Unable to get pods for CDC") } isPodDeletedOrFailedAndContainsFinalizer := func(pod *corev1.Pod) bool { return k8shelper.IsPodDeletedOrFailed(pod) && controllerutil.ContainsFinalizer(pod, polardbxmeta.Finalizer) } if err := errutil.FirstNonNil( handleFinalizerForPods(rc, flow.Logger(), k8shelper.FilterPodsBy(cnPods, isPodDeletedOrFailedAndContainsFinalizer), polardbxmeta.RoleCN, ), handleFinalizerForPods(rc, flow.Logger(), k8shelper.FilterPodsBy(cdcPods, isPodDeletedOrFailedAndContainsFinalizer), polardbxmeta.RoleCDC, ), ); err != nil { return flow.Error(err, "Failed to handle some finalizer.") } return flow.Pass() }, )
View Source
var RemoveFinalizersOnStores = polardbxv1reconcile.NewStepBinder("RemoveFinalizersOnStores", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { polardbx := rc.MustGetPolarDBX() if !polardbx.Spec.ShareGMS { gms, err := rc.GetGMS() if client.IgnoreNotFound(err) != nil { return flow.Error(err, "Unable to get xstore of GMS.") } if gms != nil { err = removeFinalizerOnStore(rc, gms) if err != nil { return flow.Error(err, "Unable to remove finalizer on xstore of GMS.", "xstore", gms.Name) } } } dnStores, err := rc.GetDNMap() if err != nil { return flow.Error(err, "Unable to get xstores of DN.") } errCnt := int32(0) wg := &sync.WaitGroup{} for i := range dnStores { xstore := dnStores[i] wg.Add(1) go func() { defer wg.Done() err := removeFinalizerOnStore(rc, xstore) if err != nil { flow.Logger().Error(err, "Unable to remove finalizer on xstore of DN.", "xstore", xstore.Name) atomic.AddInt32(&errCnt, 1) } }() } wg.Wait() if errCnt > 0 { return flow.RetryAfter(5*time.Second, "Retry finalizer remove after 5 seconds...") } return flow.Continue("Finalizers on XStores are removed!") }, )
View Source
var RemoveGuardFinalizer = polardbxv1reconcile.NewStepBinder("RemoveGuardFinalizer", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { polardbx := rc.MustGetPolarDBX() if controllerutil.ContainsFinalizer(polardbx, polardbxmeta.Finalizer) { controllerutil.RemoveFinalizer(polardbx, polardbxmeta.Finalizer) rc.MarkPolarDBXChanged() return flow.Continue("Remove guard finalizer.") } return flow.Pass() }, )
View Source
var RemoveResidualFinalizersOnPods = polardbxv1reconcile.NewStepBinder("RemoveResidualFinalizersOnPods", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { cnPods, err := rc.GetPods(polardbxmeta.RoleCN) if err != nil { return flow.Error(err, "Unable to get pods for CN") } cdcPods, err := rc.GetPods(polardbxmeta.RoleCDC) if err != nil { return flow.Error(err, "Unable to get pods for CDC") } if err := errutil.FirstNonNil( removeFinalizers(rc, flow.Logger(), cnPods), removeFinalizers(rc, flow.Logger(), cdcPods), ); err != nil { return flow.Error(err, "Failed to remove some finalizer.") } return flow.Pass() }, )
View Source
var SetupGuardFinalizer = polardbxv1reconcile.NewStepBinder("SetupGuardFinalizer", func(rc *polardbxv1reconcile.Context, flow control.Flow) (reconcile.Result, error) { polardbx := rc.MustGetPolarDBX() if !controllerutil.ContainsFinalizer(polardbx, polardbxmeta.Finalizer) { controllerutil.AddFinalizer(polardbx, polardbxmeta.Finalizer) rc.MarkPolarDBXChanged() return flow.Continue("Setup guard finalizer.") } return flow.Pass() }, )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.