[lxc-devel] [lxd/master] Stop using Driver.SetContextTimeout() which is a no-op

freeekanayaka on Github lxc-bot at linuxcontainers.org
Thu Jun 4 09:33:50 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 828 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200604/1c9d535f/attachment.bin>
-------------- next part --------------
From ad977fbb031768c858d49a8af0cd11a2e6fab2bd Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanayaka at canonical.com>
Date: Thu, 4 Jun 2020 10:28:07 +0100
Subject: [PATCH] Stop using Driver.SetContextTimeout() which is a no-op

The Driver.SetContextTimeout() has been a no-op for a while now and should be
dropped.

The functionality has been moved to the WithContextTimeout() option, which we
use when creating the driver object and that sets a 30 seconds timeout for
DB.Begin().

In all other cases we don't actually timeout anymore and rather rely on the
network layer to report a broken connection. So the original #5234 issue can't
happen anymore for non-clustered deployments.

Signed-off-by: Free Ekanayaka <free.ekanayaka at canonical.com>
---
 lxd/api_cluster.go | 16 ----------------
 lxd/db/db.go       |  6 ------
 2 files changed, 22 deletions(-)

diff --git a/lxd/api_cluster.go b/lxd/api_cluster.go
index 31ddbb6abc..b4d93fe66e 100644
--- a/lxd/api_cluster.go
+++ b/lxd/api_cluster.go
@@ -218,19 +218,11 @@ func clusterPut(d *Daemon, r *http.Request) response.Response {
 
 func clusterPutBootstrap(d *Daemon, req api.ClusterPut) response.Response {
 	run := func(op *operations.Operation) error {
-		// The default timeout when non-clustered is one minute, let's
-		// lower it down now that we'll likely have to make requests
-		// over the network.
-		//
-		// FIXME: this is a workaround for #5234.
-		d.cluster.SetDefaultTimeout(5 * time.Second)
-
 		// Start clustering tasks
 		d.startClusterTasks()
 
 		err := cluster.Bootstrap(d.State(), d.gateway, req.ServerName)
 		if err != nil {
-			d.cluster.SetDefaultTimeout(time.Minute)
 			d.stopClusterTasks()
 			return err
 		}
@@ -468,19 +460,11 @@ func clusterPutJoin(d *Daemon, req api.ClusterPut) response.Response {
 			nodes[i].Role = db.RaftRole(node.Role)
 		}
 
-		// The default timeout when non-clustered is one minute, let's
-		// lower it down now that we'll likely have to make requests
-		// over the network.
-		//
-		// FIXME: this is a workaround for #5234.
-		d.cluster.SetDefaultTimeout(5 * time.Second)
-
 		// Start clustering tasks
 		d.startClusterTasks()
 
 		err = cluster.Join(d.State(), d.gateway, cert, req.ServerName, nodes)
 		if err != nil {
-			d.cluster.SetDefaultTimeout(time.Minute)
 			d.stopClusterTasks()
 			return err
 		}
diff --git a/lxd/db/db.go b/lxd/db/db.go
index eccf970311..e1ef3a1f68 100644
--- a/lxd/db/db.go
+++ b/lxd/db/db.go
@@ -324,12 +324,6 @@ func ForLocalInspectionWithPreparedStmts(db *sql.DB) (*Cluster, error) {
 	return c, nil
 }
 
-// SetDefaultTimeout sets the default go-dqlite driver timeout.
-func (c *Cluster) SetDefaultTimeout(timeout time.Duration) {
-	driver := c.db.Driver().(*driver.Driver)
-	driver.SetContextTimeout(timeout)
-}
-
 // Kill should be called upon shutdown, it will prevent retrying failed
 // database queries.
 func (c *Cluster) Kill() {


More information about the lxc-devel mailing list