Skip to content

Commit eab1b4a

Browse files
kgala2telpirionjackwotherspoon
authored
feat(cloud-sql): add lazy refresh for csql: mysql, sql server and postgres (#5138)
* feat: add lazy refresh for csql: mysql, sql server and postgres --------- Co-authored-by: Eric Schmidt <[email protected]> Co-authored-by: Jack Wotherspoon <[email protected]>
1 parent 0a04b0c commit eab1b4a

File tree

5 files changed

+33
-4
lines changed

5 files changed

+33
-4
lines changed

cloudsql/mysql/database-sql/connect_connector.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ func connectWithConnector() (*sql.DB, error) {
4747
usePrivate = os.Getenv("PRIVATE_IP")
4848
)
4949

50-
d, err := cloudsqlconn.NewDialer(context.Background())
50+
// WithLazyRefresh() Option is used to perform refresh
51+
// when needed, rather than on a scheduled interval.
52+
// This is recommended for serverless environments to
53+
// avoid background refreshes from throttling CPU.
54+
d, err := cloudsqlconn.NewDialer(context.Background(), cloudsqlconn.WithLazyRefresh())
5155
if err != nil {
5256
return nil, fmt.Errorf("cloudsqlconn.NewDialer: %w", err)
5357
}

cloudsql/mysql/database-sql/connect_connector_iam_authn.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ func connectWithConnectorIAMAuthN() (*sql.DB, error) {
4747
usePrivate = os.Getenv("PRIVATE_IP")
4848
)
4949

50-
d, err := cloudsqlconn.NewDialer(context.Background(), cloudsqlconn.WithIAMAuthN())
50+
// WithLazyRefresh() Option is used to perform refresh
51+
// when needed, rather than on a scheduled interval.
52+
// This is recommended for serverless environments to
53+
// avoid background refreshes from throttling CPU.
54+
d, err := cloudsqlconn.NewDialer(
55+
context.Background(),
56+
cloudsqlconn.WithIAMAuthN(),
57+
cloudsqlconn.WithLazyRefresh(),
58+
)
5159
if err != nil {
5260
return nil, fmt.Errorf("cloudsqlconn.NewDialer: %w", err)
5361
}

cloudsql/postgres/database-sql/connect_connector.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ func connectWithConnector() (*sql.DB, error) {
5757
if usePrivate != "" {
5858
opts = append(opts, cloudsqlconn.WithDefaultDialOptions(cloudsqlconn.WithPrivateIP()))
5959
}
60+
// WithLazyRefresh() Option is used to perform refresh
61+
// when needed, rather than on a scheduled interval.
62+
// This is recommended for serverless environments to
63+
// avoid background refreshes from throttling CPU.
64+
opts = append(opts, cloudsqlconn.WithLazyRefresh())
6065
d, err := cloudsqlconn.NewDialer(context.Background(), opts...)
6166
if err != nil {
6267
return nil, err

cloudsql/postgres/database-sql/connect_connector_iam_authn.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ func connectWithConnectorIAMAuthN() (*sql.DB, error) {
4747
usePrivate = os.Getenv("PRIVATE_IP")
4848
)
4949

50-
d, err := cloudsqlconn.NewDialer(context.Background(), cloudsqlconn.WithIAMAuthN())
50+
// WithLazyRefresh() Option is used to perform refresh
51+
// when needed, rather than on a scheduled interval.
52+
// This is recommended for serverless environments to
53+
// avoid background refreshes from throttling CPU.
54+
d, err := cloudsqlconn.NewDialer(
55+
context.Background(),
56+
cloudsqlconn.WithIAMAuthN(),
57+
cloudsqlconn.WithLazyRefresh(),
58+
)
5159
if err != nil {
5260
return nil, fmt.Errorf("cloudsqlconn.NewDialer: %w", err)
5361
}

cloudsql/sqlserver/database-sql/connect_connector.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@ func connectWithConnector() (*sql.DB, error) {
6767
if err != nil {
6868
return nil, fmt.Errorf("mssql.NewConnector: %w", err)
6969
}
70-
dialer, err := cloudsqlconn.NewDialer(context.Background())
70+
// WithLazyRefresh() Option is used to perform refresh
71+
// when needed, rather than on a scheduled interval.
72+
// This is recommended for serverless environments to
73+
// avoid background refreshes from throttling CPU.
74+
dialer, err := cloudsqlconn.NewDialer(context.Background(), cloudsqlconn.WithLazyRefresh())
7175
if err != nil {
7276
return nil, fmt.Errorf("cloudsqlconn.NewDailer: %w", err)
7377
}

0 commit comments

Comments
 (0)