Skip to content

Commit a526aaf

Browse files
committed
feat: add timeout to connect
1 parent 612e60c commit a526aaf

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

adapters/couchdb_adapter.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,13 @@ func (adapter couchdbAdapter) Close(ctx context.Context) error {
9393
func GetCouchdbConnection(ctx context.Context, url string) (*couchdbAdapter, error) {
9494
client, err := kivik.New("couch", url)
9595
if err != nil {
96-
panic(err)
96+
return nil, err
97+
}
98+
99+
// do some call to test if connection is working
100+
_, err = client.ClusterStatus(ctx)
101+
if err != nil {
102+
return nil, err
97103
}
98104

99105
adapter := couchdbAdapter{

adapters/mongo_adapter.go

-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ func (adapter mongoAdapter) Close(ctx context.Context) error {
7474
func GetMongoConnection(ctx context.Context, url string) (*mongoAdapter, error) {
7575
clientOpts := options.Client().ApplyURI(url)
7676
client, err := mongo.Connect(ctx, clientOpts)
77-
7877
if err != nil {
7978
return nil, err
8079
}

controllers/database_controller.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controllers
33
import (
44
"context"
55
"os"
6+
"time"
67

78
"github.com/go-logr/logr"
89
"k8s.io/apimachinery/pkg/api/errors"
@@ -53,7 +54,11 @@ func (r *DatabaseReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
5354
return ctrl.Result{}, err
5455
}
5556

56-
db, err := r.getDatabaseConnection(ctx, database.Spec.Type)
57+
// use maximum of 3 seconds to connect
58+
openCtx, cancel := context.WithTimeout(ctx, time.Duration(time.Second*3))
59+
defer cancel()
60+
61+
db, err := r.getDatabaseConnection(openCtx, database.Spec.Type)
5762
if err != nil {
5863
log.Error(err, "Failed to detect or open database connection")
5964
return ctrl.Result{}, err

0 commit comments

Comments
 (0)