@@ -147,6 +147,15 @@ func (r *RepMgr) registerPrimary() error {
147147 return nil
148148}
149149
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+
150159func (r * RepMgr ) rejoinCluster (hostname string ) error {
151160 cmdStr := fmt .Sprintf ("repmgr -f %s node rejoin -h %s -p %d -U %s -d %s --force-rewind --no-wait" ,
152161 r .ConfigPath ,
@@ -380,21 +389,15 @@ func (r *RepMgr) HostInRegion(ctx context.Context, hostname string) (bool, error
380389}
381390
382391func (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
394397 }
395398
396399 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 )
398401 }
399402
400403 return nil
0 commit comments