diff --git a/go/cmd/vttestserver/main.go b/go/cmd/vttestserver/main.go index a018135913a..65614d80ace 100644 --- a/go/cmd/vttestserver/main.go +++ b/go/cmd/vttestserver/main.go @@ -150,6 +150,7 @@ func parseFlags() (config vttest.Config, env vttest.Environment, err error) { "A MySQL DB snapshot file") flag.StringVar(&config.TransactionMode, "transaction_mode", "MULTI", "Transaction mode MULTI (default), SINGLE or TWOPC ") + flag.Float64Var(&config.TransactionTimeout, "queryserver-config-transaction-timeout", 0, "query server transaction timeout (in seconds), a transaction will be killed if it takes longer than this value") flag.Parse() diff --git a/go/vt/vttest/local_cluster.go b/go/vt/vttest/local_cluster.go index b69c2ccec74..0ae9495a8cb 100644 --- a/go/vt/vttest/local_cluster.go +++ b/go/vt/vttest/local_cluster.go @@ -99,6 +99,8 @@ type Config struct { // TransactionMode is SINGLE, MULTI or TWOPC TransactionMode string + + TransactionTimeout float64 } // InitSchemas is a shortcut for tests that just want to setup a single diff --git a/go/vt/vttest/vtprocess.go b/go/vt/vttest/vtprocess.go index e3065477033..91bf375a595 100644 --- a/go/vt/vttest/vtprocess.go +++ b/go/vt/vttest/vtprocess.go @@ -237,6 +237,9 @@ func VtcomboProcess(env Environment, args *Config, mysql MySQLManager) *VtProces if args.TransactionMode != "" { vt.ExtraArgs = append(vt.ExtraArgs, []string{"-transaction_mode", args.TransactionMode}...) } + if args.TransactionTimeout != 0 { + vt.ExtraArgs = append(vt.ExtraArgs, "-queryserver-config-transaction-timeout", fmt.Sprintf("%f", args.TransactionTimeout)) + } if socket != "" { vt.ExtraArgs = append(vt.ExtraArgs, []string{