@@ -909,7 +909,7 @@ func (h *clusterShardingHandler) update(transCtx *clusterTransformContext, dag *
909909 return err
910910 }
911911
912- err3 , errorSkip := h .handleShardAddNRemove (transCtx , name , runningCompsMap , protoCompsMap , toCreate , toDelete , toUpdate )
912+ errorSkip , err3 := h .handleShardAddNRemove (transCtx , name , runningCompsMap , protoCompsMap , toCreate , toDelete , toUpdate )
913913
914914 // TODO: update strategy
915915 h .deleteComps (transCtx , dag , runningCompsMap , toDelete .Difference (errorSkip ))
@@ -1145,6 +1145,9 @@ func (h *clusterShardingHandler) handlePostProvision(transCtx *clusterTransformC
11451145 shardingStatus .PostProvision .CompletionTime = status .CompletionTime
11461146 }
11471147 }
1148+ if transCtx .Cluster .Status .Shardings == nil {
1149+ transCtx .Cluster .Status .Shardings = map [string ]appsv1.ClusterShardingStatus {}
1150+ }
11481151 transCtx .Cluster .Status .Shardings [shardingName ] = shardingStatus
11491152 }
11501153
@@ -1247,17 +1250,12 @@ func (h *clusterShardingHandler) handlePreTerminate(transCtx *clusterTransformCo
12471250 shardingStatus2 .PreTerminate .CompletionTime = status .CompletionTime
12481251 }
12491252 }
1253+ if transCtx .Cluster .Status .Shardings == nil {
1254+ transCtx .Cluster .Status .Shardings = map [string ]appsv1.ClusterShardingStatus {}
1255+ }
12501256 transCtx .Cluster .Status .Shardings [shardingName ] = shardingStatus2
12511257 }
12521258
1253- init = func () error {
1254- upsert (appsv1.LifecycleActionStatus {
1255- Phase : appsv1 .LifecycleActionPending ,
1256- StartTime : & metav1.Time {Time : time .Now ()},
1257- })
1258- return ictrlutil .NewDelayedRequeueError (time .Second , "requeue to schedule the sharding pre-terminate action" )
1259- }
1260-
12611259 skipAsNotDefined = func () error {
12621260 now := & metav1.Time {Time : time .Now ()}
12631261 upsert (appsv1.LifecycleActionStatus {
@@ -1281,18 +1279,21 @@ func (h *clusterShardingHandler) handlePreTerminate(transCtx *clusterTransformCo
12811279 }
12821280
12831281 succeed = func () error {
1282+ now := & metav1.Time {Time : time .Now ()}
12841283 upsert (appsv1.LifecycleActionStatus {
12851284 Phase : appsv1 .LifecycleActionSucceeded ,
12861285 Message : "" ,
1287- CompletionTime : & metav1.Time {Time : time .Now ()},
1286+ StartTime : now ,
1287+ CompletionTime : now ,
12881288 })
12891289 return nil
12901290 }
12911291
12921292 fail = func (err error ) error {
12931293 upsert (appsv1.LifecycleActionStatus {
1294- Phase : appsv1 .LifecycleActionFailed ,
1295- Message : err .Error (),
1294+ Phase : appsv1 .LifecycleActionFailed ,
1295+ Message : err .Error (),
1296+ StartTime : & metav1.Time {Time : time .Now ()},
12961297 })
12971298 return err // TODO: delay the requeue?
12981299 }
@@ -1327,10 +1328,6 @@ func (h *clusterShardingHandler) handlePreTerminate(transCtx *clusterTransformCo
13271328 }
13281329 }
13291330
1330- if ! initialized {
1331- return init ()
1332- }
1333-
13341331 if err := h .shardingAction (transCtx , shardingName , shardingPreTerminateAction ,
13351332 shardingDef .Spec .LifecycleActions .PreTerminate , nil , runningComps , nil ); err != nil {
13361333 return fail (err )
@@ -1340,7 +1337,7 @@ func (h *clusterShardingHandler) handlePreTerminate(transCtx *clusterTransformCo
13401337
13411338func (h * clusterShardingHandler ) handleShardAddNRemove (transCtx * clusterTransformContext , shardingName string ,
13421339 runningCompsMap map [string ]* appsv1.Component , protoCompsMap map [string ]* appsv1.Component ,
1343- toCreate , toDelete , toUpdate sets.Set [string ]) (error , sets.Set [string ]) {
1340+ toCreate , toDelete , toUpdate sets.Set [string ]) (sets.Set [string ], error ) {
13441341 var (
13451342 errorSkip = sets.Set [string ]{}
13461343
@@ -1394,9 +1391,9 @@ func (h *clusterShardingHandler) handleShardAddNRemove(transCtx *clusterTransfor
13941391 err2 := _delete ()
13951392
13961393 if err1 != nil {
1397- return err1 , errorSkip
1394+ return errorSkip , err1
13981395 }
1399- return err2 , errorSkip
1396+ return errorSkip , err2
14001397}
14011398
14021399func (h * clusterShardingHandler ) handleShardAdd (transCtx * clusterTransformContext ,
@@ -1408,12 +1405,9 @@ func (h *clusterShardingHandler) handleShardAdd(transCtx *clusterTransformContex
14081405 return runningComp .Annotations [shardingAddShardKey ] != ""
14091406 }
14101407
1411- fail = func (err error ) error {
1412- if protoComp .Annotations == nil {
1413- protoComp .Annotations = make (map [string ]string )
1414- }
1415- protoComp .Annotations [shardingAddShardKey ] = runningComp .Annotations [shardingAddShardKey ]
1416- return err
1408+ succeed = func () error {
1409+ delete (runningComp .Annotations , shardingAddShardKey )
1410+ return nil
14171411 }
14181412 )
14191413
@@ -1425,10 +1419,10 @@ func (h *clusterShardingHandler) handleShardAdd(transCtx *clusterTransformContex
14251419 args := map [string ]string {shardingAddShardNameVar : runningComp .Name }
14261420 if err := h .shardingAction (transCtx , shardingName , shardingAddShardAction ,
14271421 shardingDef .Spec .LifecycleActions .ShardAdd , args , runningComps , runningComp ); err != nil {
1428- return fail ( err )
1422+ return err
14291423 }
14301424 }
1431- return nil
1425+ return succeed ()
14321426}
14331427
14341428func (h * clusterShardingHandler ) handleShardRemove (transCtx * clusterTransformContext ,
0 commit comments