Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions .github/workflows/pre-commit.yaml

This file was deleted.

76 changes: 76 additions & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: "Push"
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
- reopened

jobs:
build:
name: "Build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v3
with:
go-version: '1.19'
go-version-file: 'go.mod'
cache: true

- name: Build binaries
run: go install ./cmd/...

unit:
name: "Unit Tests"
runs-on: ubuntu-latest
strategy:
fail-fast: false

steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v3
with:
go-version: '1.19'
go-version-file: 'go.mod'
cache: true

- name: Run unit tests
run: go test -v ./...


staticcheck:
name: "Staticcheck"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v3
with:
go-version: '1.19'
go-version-file: 'go.mod'
cache: true

- uses: dominikh/[email protected]
with:
install-go: false

errcheck:
name: "Errcheck"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v3
with:
go-version: '1.19'
go-version-file: 'go.mod'
cache: true

- run: go install github.com/kisielk/errcheck@latest
- run: errcheck -ignore 'AddCheck' ./...
2 changes: 1 addition & 1 deletion cmd/event_handler/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func processEvent(ctx context.Context) error {
if err != nil {
return fmt.Errorf("failed to open local connection: %s", err)
}
defer conn.Close(ctx)
defer func() { _ = conn.Close(ctx) }()

member, err := node.RepMgr.Member(ctx, conn)
if err != nil {
Expand Down
6 changes: 5 additions & 1 deletion cmd/monitor/monitor_cluster_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func clusterStateMonitorTick(ctx context.Context, node *flypg.Node) error {
if err != nil {
return fmt.Errorf("failed to open local connection: %s", err)
}
defer conn.Close(ctx)
defer func() { _ = conn.Close(ctx) }()

member, err := node.RepMgr.Member(ctx, conn)
if err != nil {
Expand Down Expand Up @@ -60,5 +60,9 @@ func clusterStateMonitorTick(ctx context.Context, node *flypg.Node) error {
}
}

if err := conn.Close(ctx); err != nil {
return fmt.Errorf("failed to close connection: %s", err)
}

return nil
}
11 changes: 9 additions & 2 deletions cmd/monitor/monitor_dead_members.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func deadMemberMonitorTick(ctx context.Context, node *flypg.Node, seenAt map[int
if err != nil {
return fmt.Errorf("failed to open local connection: %s", err)
}
defer conn.Close(ctx)
defer func() { _ = conn.Close(ctx) }()

member, err := node.RepMgr.MemberByID(ctx, conn, int(node.RepMgr.ID))
if err != nil {
Expand Down Expand Up @@ -87,8 +87,15 @@ func deadMemberMonitorTick(ctx context.Context, node *flypg.Node, seenAt map[int

continue
}
defer sConn.Close(ctx)
seenAt[standby.ID] = time.Now()

if err := sConn.Close(ctx); err != nil {
return fmt.Errorf("failed to close connection: %s", err)
}
}

if err := conn.Close(ctx); err != nil {
return fmt.Errorf("failed to close connection: %s", err)
}

return nil
Expand Down
7 changes: 6 additions & 1 deletion cmd/monitor/monitor_replication_slots.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"context"
"fmt"
"log"
"time"

Expand All @@ -26,7 +27,7 @@ func replicationSlotMonitorTick(ctx context.Context, node *flypg.Node, inactiveS
if err != nil {
log.Printf("failed to open local connection: %s\n", err)
}
defer conn.Close(ctx)
defer func() { _ = conn.Close(ctx) }()

member, err := node.RepMgr.Member(ctx, conn)
if err != nil {
Expand Down Expand Up @@ -82,5 +83,9 @@ func replicationSlotMonitorTick(ctx context.Context, node *flypg.Node, inactiveS
}
}

if err := conn.Close(ctx); err != nil {
return fmt.Errorf("failed to close connection: %s", err)
}

return nil
}
2 changes: 1 addition & 1 deletion cmd/pg_unregister/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func processUnregistration(ctx context.Context) error {
if err != nil {
return fmt.Errorf("failed to connect to local db: %s", err)
}
defer conn.Close(ctx)
defer func() { _ = conn.Close(ctx) }()

member, err := node.RepMgr.MemberByHostname(ctx, conn, string(hostnameBytes))
if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions internal/api/handle_admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func handleRole(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

member, err := node.RepMgr.Member(r.Context(), conn)
if err != nil {
Expand Down Expand Up @@ -130,7 +130,7 @@ func handleUpdatePostgresSettings(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

consul, err := state.NewStore()
if err != nil {
Expand Down Expand Up @@ -210,7 +210,7 @@ func handleApplyConfig(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

consul, err := state.NewStore()
if err != nil {
Expand Down Expand Up @@ -241,7 +241,7 @@ func handleViewPostgresSettings(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

var requestedSettings []string
if err := json.NewDecoder(r.Body).Decode(&requestedSettings); err != nil {
Expand Down
10 changes: 5 additions & 5 deletions internal/api/handle_databases.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func handleListDatabases(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

dbs, err := admin.ListDatabases(ctx, conn)
if err != nil {
Expand All @@ -41,7 +41,7 @@ func handleGetDatabase(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

db, err := admin.FindDatabase(ctx, conn, name)
if err != nil {
Expand All @@ -63,7 +63,7 @@ func handleCreateDatabase(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

var input createDatabaseRequest
if err := json.NewDecoder(r.Body).Decode(&input); err != nil {
Expand All @@ -82,7 +82,7 @@ func handleCreateDatabase(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

if err := admin.GrantCreateOnPublic(ctx, dbConn); err != nil {
renderErr(w, err)
Expand All @@ -103,7 +103,7 @@ func handleDeleteDatabase(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

err = admin.DeleteDatabase(ctx, conn, name)
if err != nil {
Expand Down
10 changes: 5 additions & 5 deletions internal/api/handle_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func handleListUsers(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

users, err := admin.ListUsers(ctx, conn)
if err != nil {
Expand All @@ -43,7 +43,7 @@ func handleGetUser(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

user, err := admin.FindUser(ctx, conn, name)
if err != nil {
Expand All @@ -64,7 +64,7 @@ func handleCreateUser(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

var input createUserRequest
err = json.NewDecoder(r.Body).Decode(&input)
Expand Down Expand Up @@ -112,7 +112,7 @@ func handleDeleteUser(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer conn.Close(r.Context())
defer func() { _ = conn.Close(r.Context()) }()

databases, err := admin.ListDatabases(ctx, conn)
if err != nil {
Expand All @@ -126,7 +126,7 @@ func handleDeleteUser(w http.ResponseWriter, r *http.Request) {
renderErr(w, err)
return
}
defer dbConn.Close(r.Context())
defer func() { _ = dbConn.Close(r.Context()) }()

if err := admin.ReassignOwnership(ctx, dbConn, name, "postgres"); err != nil {
renderErr(w, fmt.Errorf("failed to reassign ownership: %s", err))
Expand Down
8 changes: 3 additions & 5 deletions internal/flycheck/pg.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (

"github.com/fly-apps/postgres-flex/internal/flypg"
"github.com/jackc/pgx/v5"
"github.com/pkg/errors"
"github.com/superfly/fly-checks/check"
)

Expand All @@ -17,12 +16,12 @@ const diskCapacityPercentageThreshold = 90.0
func CheckPostgreSQL(ctx context.Context, checks *check.CheckSuite) (*check.CheckSuite, error) {
node, err := flypg.NewNode()
if err != nil {
return checks, errors.Wrap(err, "failed to initialize node")
return checks, fmt.Errorf("failed to initialize node: %s", err)
}

localConn, err := node.NewLocalConnection(ctx, "postgres")
if err != nil {
return checks, errors.Wrap(err, "failed to connect with local node")
return checks, fmt.Errorf("failed to connect with local node: %s", err)
}

repConn, err := node.RepMgr.NewLocalConnection(ctx)
Expand Down Expand Up @@ -98,9 +97,8 @@ func connectionCount(ctx context.Context, local *pgx.Conn) (string, error) {
var used, reserved, max int

err := local.QueryRow(ctx, sql).Scan(&used, &reserved, &max)

if err != nil {
return "", fmt.Errorf("%v", err)
return "", fmt.Errorf("failed to query connection count: %s", err)
}

return fmt.Sprintf("%d used, %d reserved, %d max", used, reserved, max), nil
Expand Down
Loading