@@ -147,6 +147,15 @@ func (r *RepMgr) registerPrimary() error {
147
147
return nil
148
148
}
149
149
150
+ func (r * RepMgr ) unregisterPrimary (id int ) error {
151
+ cmdStr := fmt .Sprintf ("repmgr primary unregister -f %s --node-id=%d" , r .ConfigPath , id )
152
+ if err := utils .RunCommand (cmdStr ); err != nil {
153
+ fmt .Printf ("failed to unregister primary: %s" , err )
154
+ }
155
+
156
+ return nil
157
+ }
158
+
150
159
func (r * RepMgr ) rejoinCluster (hostname string ) error {
151
160
cmdStr := fmt .Sprintf ("repmgr -f %s node rejoin -h %s -p %d -U %s -d %s --force-rewind --no-wait" ,
152
161
r .ConfigPath ,
@@ -380,21 +389,15 @@ func (r *RepMgr) HostInRegion(ctx context.Context, hostname string) (bool, error
380
389
}
381
390
382
391
func (r * RepMgr ) UnregisterMember (ctx context.Context , member Member ) error {
383
- if err := r .unregisterStandby (member .ID ); err != nil {
384
- return fmt .Errorf ("failed to unregister member %d from repmgr: %s" , member .ID , err )
385
- }
386
-
387
- return nil
388
- }
389
-
390
- func (r * RepMgr ) UnregisterMemberByHostname (ctx context.Context , conn * pgx.Conn , hostname string ) error {
391
- member , err := r .MemberByHostname (ctx , conn , hostname )
392
- if err != nil {
393
- return fmt .Errorf ("failed to resolve member %s: %s" , hostname , err )
392
+ if member .Role == PrimaryRoleName {
393
+ if err := r .unregisterPrimary (member .ID ); err != nil {
394
+ return fmt .Errorf ("failed to unregister member %d: %s" , member .ID , err )
395
+ }
396
+ return nil
394
397
}
395
398
396
399
if err := r .unregisterStandby (member .ID ); err != nil {
397
- return fmt .Errorf ("failed to unregister member %d from repmgr : %s" , member .ID , err )
400
+ return fmt .Errorf ("failed to unregister member %d: %s" , member .ID , err )
398
401
}
399
402
400
403
return nil
0 commit comments