Skip to content

Commit 6884f31

Browse files
authored
[Bugfix] Fix Single server PVC Removal (#714)
1 parent 1657121 commit 6884f31

File tree

6 files changed

+24
-1
lines changed

6 files changed

+24
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Change Log
22

33
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
4+
- Prevent Single member recreation
5+
- Add OwnerReference to ClusterIP member service
46
- Add InternalPort to ServerGroupSpec to allow user to expose tcp connection over localhost for sidecars
57

68
## [1.1.7](https://github.com/arangodb/kube-arangodb/tree/1.1.7) (2021-04-14)

pkg/apis/deployment/v1/server_group.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ func (g *ServerGroup) UnmarshalJSON(bytes []byte) error {
3535
return nil
3636
}
3737

38+
{
39+
// Try with int
40+
var s int
41+
42+
if err := json.Unmarshal(bytes, &s); err == nil {
43+
*g = ServerGroupFromRole(ServerGroup(s).AsRole())
44+
return nil
45+
}
46+
}
47+
3848
var s string
3949

4050
if err := json.Unmarshal(bytes, &s); err != nil {

pkg/deployment/reconcile/action_upgrade_member.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (a *actionUpgradeMember) CheckProgress(ctx context.Context) (bool, bool, er
9393
return false, abort, err
9494
}
9595

96-
return false, true, nil
96+
return false, false, nil
9797
}
9898

9999
isUpgrading := m.Phase == api.MemberPhaseUpgrading

pkg/deployment/reconcile/plan_builder.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,17 @@ func createPlan(ctx context.Context, log zerolog.Logger, apiObject k8sutil.APIOb
164164
memberLog.Msg("Restoring old member. For agency members recreation of PVC is not supported - to prevent DataLoss")
165165
plan = append(plan,
166166
api.NewAction(api.ActionTypeRecreateMember, group, m.ID))
167+
case api.ServerGroupSingle:
168+
// Do not remove data for singles
169+
memberLog.Msg("Restoring old member. Rotation for single servers is not safe")
170+
plan = append(plan,
171+
api.NewAction(api.ActionTypeRecreateMember, group, m.ID))
167172
default:
168173
memberLog.Msg("Creating member replacement plan because member has failed")
169174
plan = append(plan,
170175
api.NewAction(api.ActionTypeRemoveMember, group, m.ID),
171176
api.NewAction(api.ActionTypeAddMember, group, ""),
177+
api.NewAction(api.ActionTypeWaitForMemberUp, group, api.MemberIDPreviousAction),
172178
)
173179

174180
}

pkg/deployment/reconcile/plan_builder_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,7 @@ func TestCreatePlan(t *testing.T) {
778778
ExpectedPlan: []api.Action{
779779
api.NewAction(api.ActionTypeRemoveMember, api.ServerGroupCoordinators, "id"),
780780
api.NewAction(api.ActionTypeAddMember, api.ServerGroupCoordinators, ""),
781+
api.NewAction(api.ActionTypeWaitForMemberUp, api.ServerGroupCoordinators, api.MemberIDPreviousAction),
781782
},
782783
ExpectedLog: "Creating member replacement plan because member has failed",
783784
},
@@ -796,6 +797,7 @@ func TestCreatePlan(t *testing.T) {
796797
ExpectedPlan: []api.Action{
797798
api.NewAction(api.ActionTypeRemoveMember, api.ServerGroupDBServers, "id"),
798799
api.NewAction(api.ActionTypeAddMember, api.ServerGroupDBServers, ""),
800+
api.NewAction(api.ActionTypeWaitForMemberUp, api.ServerGroupDBServers, api.MemberIDPreviousAction),
799801
},
800802
ExpectedLog: "Creating member replacement plan because member has failed",
801803
},

pkg/deployment/resources/services.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ func (r *Resources) EnsureServices(cachedStatus inspectorInterface.Inspector) er
8080
ObjectMeta: metav1.ObjectMeta{
8181
Name: member.GetName(),
8282
Namespace: member.GetNamespace(),
83+
OwnerReferences: []metav1.OwnerReference{
84+
member.AsOwner(),
85+
},
8386
},
8487
Spec: core.ServiceSpec{
8588
Type: core.ServiceTypeClusterIP,

0 commit comments

Comments
 (0)