Skip to content

Commit 8778bd5

Browse files
author
Ben Iofel
committed
upgrade primary
1 parent a995af1 commit 8778bd5

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ require (
88
github.com/hashicorp/consul/api v1.18.0
99
github.com/jackc/pgconn v1.14.3
1010
github.com/jackc/pgx/v5 v5.5.4
11+
github.com/olekukonko/tablewriter v0.0.5
1112
github.com/pkg/errors v0.9.1
1213
github.com/pkg/term v1.1.0
14+
github.com/spf13/cobra v1.8.1
1315
github.com/superfly/fly-checks v0.0.0-20230510154016-d189351293f2
1416
golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3
1517
golang.org/x/sync v0.1.0
@@ -36,8 +38,6 @@ require (
3638
github.com/mattn/go-runewidth v0.0.9 // indirect
3739
github.com/mitchellh/go-homedir v1.1.0 // indirect
3840
github.com/mitchellh/mapstructure v1.4.1 // indirect
39-
github.com/olekukonko/tablewriter v0.0.5 // indirect
40-
github.com/spf13/cobra v1.8.1 // indirect
4141
github.com/spf13/pflag v1.0.5 // indirect
4242
github.com/stretchr/objx v0.5.0 // indirect
4343
golang.org/x/crypto v0.20.0 // indirect

internal/flypg/readonly.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func BroadcastReadonlyChange(ctx context.Context, n *Node, enabled bool) error {
7070

7171
for _, member := range members {
7272
if member.Role == PrimaryRoleName {
73-
endpoint := fmt.Sprintf("http://%s:5500/%s", fmt.Sprintf("%s.vm.%s.internal", member.NodeName, n.AppName), target)
73+
endpoint := fmt.Sprintf("http://%s:5500/%s", member.NodeName, target)
7474
resp, err := http.Get(endpoint)
7575
if err != nil {
7676
log.Printf("[WARN] Failed to broadcast readonly state change to member %s: %s", member.NodeName, err)
@@ -85,7 +85,7 @@ func BroadcastReadonlyChange(ctx context.Context, n *Node, enabled bool) error {
8585
}
8686

8787
for _, member := range members {
88-
endpoint := fmt.Sprintf("http://%s:5500/%s", fmt.Sprintf("%s.vm.%s.internal", member.NodeName, n.AppName), RestartHaproxyEndpoint)
88+
endpoint := fmt.Sprintf("http://%s:5500/%s", member.NodeName, RestartHaproxyEndpoint)
8989
resp, err := http.Get(endpoint)
9090
if err != nil {
9191
log.Printf("[WARN] Failed to restart haproxy on member %s: %s", member.NodeName, err)

internal/flypg/repmgr.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,11 @@ func (r *RepMgr) setDefaults() error {
174174
return err
175175
}
176176

177-
hostname := fmt.Sprintf("%s.vm.%s.internal", r.MachineID, r.AppName)
177+
hostname := r.machineIdToDNS(r.MachineID)
178178

179179
conf := ConfigMap{
180180
"node_id": nodeID,
181-
"node_name": fmt.Sprintf("'%s'", r.MachineID),
181+
"node_name": fmt.Sprintf("'%s'", hostname),
182182
"conninfo": fmt.Sprintf("'host=%s port=%d user=%s dbname=%s connect_timeout=5'", hostname, r.Port, r.Credentials.Username, r.DatabaseName),
183183
"data_directory": fmt.Sprintf("'%s'", r.DataDir),
184184
"failover": "'automatic'",
@@ -301,10 +301,10 @@ func (r *RepMgr) unregisterWitness(id int) error {
301301
return err
302302
}
303303

304-
func (r *RepMgr) rejoinCluster(machineID string) error {
304+
func (r *RepMgr) rejoinCluster(nodeName string) error {
305305
cmdStr := fmt.Sprintf("repmgr -f %s node rejoin -h %s -p %d -U %s -d %s --force-rewind --no-wait",
306306
r.ConfigPath,
307-
fmt.Sprintf("%s.vm.%s.internal", machineID, r.AppName),
307+
nodeName,
308308
r.Port,
309309
r.Credentials.Username,
310310
r.DatabaseName,
@@ -316,14 +316,14 @@ func (r *RepMgr) rejoinCluster(machineID string) error {
316316
return err
317317
}
318318

319-
func (r *RepMgr) clonePrimary(machineId string) error {
319+
func (r *RepMgr) clonePrimary(hostname string) error {
320320
cmdStr := fmt.Sprintf("mkdir -p %s", r.DataDir)
321321
if _, err := utils.RunCommand(cmdStr, "postgres"); err != nil {
322322
return fmt.Errorf("failed to create pg directory: %s", err)
323323
}
324324

325325
cmdStr = fmt.Sprintf("repmgr -h %s -p %d -d %s -U %s -f %s standby clone -c -F",
326-
fmt.Sprintf("%s.vm.%s.internal", machineId, r.AppName),
326+
hostname,
327327
r.Port,
328328
r.DatabaseName,
329329
r.Credentials.Username,
@@ -474,13 +474,13 @@ func (r *RepMgr) ResolveMemberOverDNS(ctx context.Context) (*Member, error) {
474474
continue
475475
}
476476

477-
conn, err := r.NewRemoteConnection(ctx, machineId)
477+
conn, err := r.NewRemoteConnection(ctx, r.machineIdToDNS(machineId))
478478
if err != nil {
479479
continue
480480
}
481481
defer func() { _ = conn.Close(ctx) }()
482482

483-
member, err := r.MemberByHostname(ctx, conn, machineId)
483+
member, err := r.MemberByHostname(ctx, conn, r.machineIdToDNS(machineId))
484484
if err != nil {
485485
continue
486486
}
@@ -559,3 +559,11 @@ func (r *RepMgr) UnregisterMember(member Member) error {
559559
func (r *RepMgr) eligiblePrimary() bool {
560560
return r.Region == r.PrimaryRegion
561561
}
562+
563+
func (r *RepMgr) machineIdToDNS(nodeName string) string {
564+
if len(nodeName) != 14 {
565+
panic("invalid machine id")
566+
}
567+
568+
return fmt.Sprintf("%s.vm.%s.internal", nodeName, r.AppName)
569+
}

internal/flypg/zombie.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func TakeDNASample(ctx context.Context, node *Node, standbys []Member) (*DNASamp
117117
sample.totalActive++
118118

119119
// Record conflict when primary doesn't match.
120-
if primary.NodeName != node.MachineID {
120+
if primary.NodeName != node.MachineID && primary.NodeName != node.PrivateIP {
121121
sample.totalConflicts++
122122
sample.conflictMap[primary.NodeName]++
123123
}

0 commit comments

Comments
 (0)