Skip to content

Commit 1e75a7c

Browse files
committed
improve error handling
1 parent b3f8f3c commit 1e75a7c

File tree

6 files changed

+60
-64
lines changed

6 files changed

+60
-64
lines changed

private-path-to-vpc-vsi/ce-app/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module github.com/IBM/CodeEngine/ce-satellite-connector
1+
module github.com/IBM/CodeEngine/ce-private-path
22

33
go 1.23.0
44

private-path-to-vpc-vsi/ce-app/main.go

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"os"
1111
"os/signal"
12+
"strings"
1213
"syscall"
1314
"time"
1415

@@ -17,7 +18,7 @@ import (
1718

1819
var dbClient = connectToDb()
1920

20-
type Friendship struct {
21+
type GuestbookEntry struct {
2122
Name string `json:"name"`
2223
Created int64 `json:"created"`
2324
Greeting string `json:"greeting"`
@@ -41,39 +42,49 @@ func connectToDb() *sql.DB {
4142
// This func will handle all incoming HTTP requests
4243
func HandleHTTP(w http.ResponseWriter, r *http.Request) {
4344

44-
friendships := []Friendship{}
45+
guestbookEntries := []GuestbookEntry{}
4546
var (
4647
name string
4748
created_at int64
4849
greeting string
4950
)
50-
Debug("Fetching all friendship records ...")
51-
rows, sqlErr := dbClient.Query("SELECT name, created_at, greeting FROM myfriendships")
51+
Debug("Fetching all guestbook entries ...")
52+
rows, sqlErr := dbClient.Query("SELECT name, created_at, greeting FROM guestbook")
5253
if sqlErr != nil {
53-
log.Printf("Retrieving friendship records failed - err: " + sqlErr.Error())
54+
log.Printf("Retrieving guestbook entries failed - err: " + sqlErr.Error())
55+
if strings.Contains(sqlErr.Error(), "dial tcp") {
56+
w.WriteHeader(502)
57+
fmt.Fprintf(w, "Can't reach '%s'", os.Getenv("PGHOST"))
58+
return
59+
}
5460
w.WriteHeader(500)
61+
fmt.Fprintf(w, "%s", sqlErr.Error())
62+
return
5563
}
5664
defer rows.Close()
5765
for rows.Next() {
5866
err := rows.Scan(&name, &created_at, &greeting)
5967
if err != nil {
60-
log.Printf("Scanning friendship record failed - err: " + err.Error())
68+
log.Printf("Scanning guestbook entries failed - err: " + err.Error())
6169
w.WriteHeader(500)
70+
fmt.Fprintf(w, "%s", err.Error())
71+
return
6272
}
63-
log.Println("Retrieved friendship records", name, created_at, greeting)
64-
friendships = append(friendships, Friendship{Name: name, Created: created_at, Greeting: greeting})
73+
log.Println("Retrieved guestbook records", name, created_at, greeting)
74+
guestbookEntries = append(guestbookEntries, GuestbookEntry{Name: name, Created: created_at, Greeting: greeting})
6575
}
6676

67-
Debug("Fetched %d friendship records", len(friendships))
68-
bytes, err := json.Marshal(&friendships)
77+
Debug("Fetched %d guestbook entries", len(guestbookEntries))
78+
bytes, err := json.Marshal(&guestbookEntries)
6979
if err != nil {
7080
log.Printf("Failed to marshal response - err: " + err.Error())
7181
w.WriteHeader(500)
82+
fmt.Fprintf(w, "%s", err.Error())
83+
return
7284
}
7385

7486
w.Header().Add("Content-Type", "application/json")
7587
fmt.Fprintf(w, "%s", string(bytes))
76-
7788
}
7889

7990
func main() {
@@ -96,6 +107,7 @@ func main() {
96107

97108
<-signals
98109
Debug("shutting down server")
110+
dbClient.Close()
99111
if err := srv.Shutdown(ctx); err != nil {
100112
log.Fatalf("failed to shutdown server: %v", err)
101113
}

private-path-to-vpc-vsi/ce-job/job.mjs

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,46 @@ import { LoremIpsum } from "lorem-ipsum";
44
const { Client } = pkg;
55

66
console.log("Connecting to PostgreSQL instance...");
7+
8+
const client = new Client({
9+
user: process.env.PGUSER,
10+
password: process.env.PGPASSWORD,
11+
host: process.env.PGHOST,
12+
database: process.env.PGDATABASE,
13+
port: process.env.PGPORT,
14+
});
715
try {
8-
const client = new Client({
9-
user: process.env.PGUSER,
10-
password: process.env.PGPASSWORD,
11-
host: process.env.PGHOST,
12-
database: process.env.PGDATABASE,
13-
port: process.env.PGPORT,
14-
});
1516
await client.connect();
1617

17-
console.log("Creating myfriendships table if it does not exist...");
18-
await client.query("CREATE TABLE IF NOT EXISTS myfriendships (id SERIAL PRIMARY KEY, name varchar(256) NOT NULL, created_at bigint NOT NULL, greeting text);");
18+
console.log("Creating guestbook table if it does not exist...");
19+
await client.query(
20+
"CREATE TABLE IF NOT EXISTS guestbook (id SERIAL PRIMARY KEY, name varchar(256) NOT NULL, created_at bigint NOT NULL, greeting text);"
21+
);
1922

20-
console.log("Writing into myfriendships table...");
21-
await client.query("INSERT INTO myfriendships (name,created_at,greeting) VALUES ($1,$2,$3);", [
23+
console.log("Writing into guestbook table...");
24+
await client.query("INSERT INTO guestbook (name,created_at,greeting) VALUES ($1,$2,$3);", [
2225
process.env.HOSTNAME,
2326
Date.now(),
2427
new LoremIpsum().generateWords(5),
2528
]);
2629

30+
if (process.env.ACTION === "cleanup") {
31+
console.log("Cleaning up table content...");
32+
await client.query("DELETE FROM guestbook;");
33+
}
34+
2735
await client.end();
2836
console.log("Done!");
2937
} catch (err) {
3038
console.error("Failed to connect to PostgreSQL instance", err);
39+
40+
if(client) {
41+
try {
42+
await client.end();
43+
} catch(error) {
44+
// just do it
45+
}
46+
}
47+
3148
process.exit(1);
3249
}

0 commit comments

Comments
 (0)