Skip to content

Commit 5807817

Browse files
committed
Cleanup
1 parent 03aab68 commit 5807817

File tree

3 files changed

+51
-71
lines changed

3 files changed

+51
-71
lines changed

.flyctl/cmd/pg_unregister/main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ func main() {
1919
return
2020
}
2121

22-
if err := flypg.UnregisterMemberByHostname(context.Background(), string(hostnameBytes)); err != nil {
22+
node := flypg.NewNode()
23+
24+
if err := node.UnregisterMemberByHostname(context.Background(), string(hostnameBytes)); err != nil {
2325
utils.WriteError(err)
2426
os.Exit(1)
2527
return

cmd/standby_cleaner/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func main() {
6060
if err != nil {
6161
// TODO - Verify the exception that's getting thrown.
6262
if time.Now().Sub(seenAt[standby.Id]) >= deadMemberRemovalThreshold {
63-
if err := flypg.UnregisterMemberByID(ctx, int32(standby.Id)); err != nil {
63+
if err := flypgNode.UnregisterMemberByID(ctx, int32(standby.Id)); err != nil {
6464
fmt.Printf("failed to unregister member %d: %v\n", standby.Id, err.Error())
6565
continue
6666
}

pkg/flypg/node.go

Lines changed: 47 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,34 @@ func (n *Node) NewLocalConnection(ctx context.Context, database string) (*pgx.Co
323323
return openConnection(ctx, host, database, n.OperatorCredentials)
324324
}
325325

326+
func (n *Node) UnregisterMemberByHostname(ctx context.Context, hostname string) error {
327+
cs, err := state.NewClusterState()
328+
if err != nil {
329+
fmt.Printf("failed initialize cluster state store. %v", err)
330+
}
331+
332+
member, err := cs.FindMemberByHostname(hostname)
333+
if err != nil {
334+
return err
335+
}
336+
337+
return n.unregisterNode(ctx, cs, member)
338+
}
339+
340+
func (n *Node) UnregisterMemberByID(ctx context.Context, id int32) error {
341+
cs, err := state.NewClusterState()
342+
if err != nil {
343+
fmt.Printf("failed initialize cluster state store. %v", err)
344+
}
345+
346+
member, err := cs.FindMemberByID(id)
347+
if err != nil {
348+
return err
349+
}
350+
351+
return n.unregisterNode(ctx, cs, member)
352+
}
353+
326354
func (n *Node) isInitialized() bool {
327355
_, err := os.Stat(n.DataDir)
328356
if os.IsNotExist(err) {
@@ -383,6 +411,25 @@ func (n *Node) createRequiredUsers(ctx context.Context, conn *pgx.Conn) error {
383411
return nil
384412
}
385413

414+
func (n *Node) unregisterNode(ctx context.Context, cs *state.ClusterState, member *state.Member) error {
415+
if member == nil {
416+
return state.ErrMemberNotFound
417+
}
418+
419+
// Unregister from repmgr
420+
err := n.RepMgr.UnregisterStandby(int(member.ID))
421+
if err != nil {
422+
return fmt.Errorf("failed to unregister member %d from repmgr: %s", member.ID, err)
423+
}
424+
425+
// Unregister from consul
426+
if err := cs.UnregisterMember(member.ID); err != nil {
427+
return fmt.Errorf("failed to unregister member %d from consul: %v", member.ID, err)
428+
}
429+
430+
return nil
431+
}
432+
386433
type HBAEntry struct {
387434
Type string
388435
Database string
@@ -464,75 +511,6 @@ func (n *Node) setDefaultHBA() error {
464511
return nil
465512
}
466513

467-
func UnregisterMemberByHostname(ctx context.Context, hostname string) error {
468-
cs, err := state.NewClusterState()
469-
if err != nil {
470-
fmt.Printf("failed initialize cluster state store. %v", err)
471-
}
472-
473-
member, err := cs.FindMemberByHostname(hostname)
474-
if err != nil {
475-
return err
476-
}
477-
478-
if member == nil {
479-
return state.ErrMemberNotFound
480-
}
481-
482-
node, err := NewNode()
483-
if err != nil {
484-
return err
485-
}
486-
487-
// Unregister from repmgr
488-
err = node.RepMgr.UnregisterStandby(int(member.ID))
489-
if err != nil {
490-
return fmt.Errorf("failed to unregister member %d from repmgr: %s", member.ID, err)
491-
}
492-
493-
// Unregister from consul
494-
if err := cs.UnregisterMember(int32(member.ID)); err != nil {
495-
fmt.Printf("failed to unregister member %d from consul: %v", member.ID, err)
496-
}
497-
498-
return nil
499-
}
500-
501-
func UnregisterMemberByID(ctx context.Context, id int32) error {
502-
503-
cs, err := state.NewClusterState()
504-
if err != nil {
505-
fmt.Printf("failed initialize cluster state store. %v", err)
506-
}
507-
508-
member, err := cs.FindMemberByID(id)
509-
if err != nil {
510-
return err
511-
}
512-
513-
if member == nil {
514-
return state.ErrMemberNotFound
515-
}
516-
517-
node, err := NewNode()
518-
if err != nil {
519-
return err
520-
}
521-
522-
// Unregister from repmgr
523-
err = node.RepMgr.UnregisterStandby(int(member.ID))
524-
if err != nil {
525-
return fmt.Errorf("failed to unregister member %d from repmgr: %s", member.ID, err)
526-
}
527-
528-
// Unregister from consul
529-
if err := cs.UnregisterMember(member.ID); err != nil {
530-
return fmt.Errorf("failed to unregister member %d from consul: %v", member.ID, err)
531-
}
532-
533-
return nil
534-
}
535-
536514
func openConnection(parentCtx context.Context, host string, database string, creds Credentials) (*pgx.Conn, error) {
537515
ctx, cancel := context.WithTimeout(parentCtx, 10*time.Second)
538516
defer cancel()

0 commit comments

Comments
 (0)