From eab4999faace675b48e1dc4daf3531d04f9e73e4 Mon Sep 17 00:00:00 2001 From: HighPon Date: Fri, 10 Nov 2023 03:20:29 +0900 Subject: [PATCH 01/12] sessionctx/variable: set DEFAULT_VALUE for 'tidb_txn_mode' --- pkg/infoschema/BUILD.bazel | 2 +- pkg/infoschema/infoschema_test.go | 10 ++++++++++ pkg/sessionctx/variable/sysvar.go | 7 ++++++- pkg/sessionctx/variable/tidb_vars.go | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pkg/infoschema/BUILD.bazel b/pkg/infoschema/BUILD.bazel index b88917fbca2a0..894914d4397e3 100644 --- a/pkg/infoschema/BUILD.bazel +++ b/pkg/infoschema/BUILD.bazel @@ -72,7 +72,7 @@ go_test( ], embed = [":infoschema"], flaky = True, - shard_count = 8, + shard_count = 9, deps = [ "//pkg/ddl/placement", "//pkg/domain", diff --git a/pkg/infoschema/infoschema_test.go b/pkg/infoschema/infoschema_test.go index 0e4461744270f..7856deddda944 100644 --- a/pkg/infoschema/infoschema_test.go +++ b/pkg/infoschema/infoschema_test.go @@ -30,6 +30,7 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/session" + "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit" @@ -850,3 +851,12 @@ func TestInfoSchemaCreateTableLike(t *testing.T) { require.Equal(t, tblInfo.Indices[0].Name.O, "idx") require.Equal(t, tblInfo.Indices[0].ID, int64(1)) } + +func TestCheckDefaultValueForTidbTxnMode(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + + rs, err := tk.Exec("SELECT DEFAULT_VALUE FROM information_schema.variables_info WHERE variable_name = 'tidb_txn_mode';") + require.NoError(t, err) + require.Equal(t, tk.ResultSetToResult(rs, "").Rows()[0][0], variable.PessimisticTxnMode) +} diff --git a/pkg/sessionctx/variable/sysvar.go b/pkg/sessionctx/variable/sysvar.go index 21f176715a5ec..5d7e465a00e4b 100644 --- a/pkg/sessionctx/variable/sysvar.go +++ b/pkg/sessionctx/variable/sysvar.go @@ -1893,7 +1893,7 @@ var defaultSysVars = []*SysVar{ s.ConstraintCheckInPlace = TiDBOptOn(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBTxnMode, Value: DefTiDBTxnMode, AllowEmptyAll: true, Type: TypeEnum, PossibleValues: []string{"pessimistic", "optimistic"}, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal | ScopeSession, Name: TiDBTxnMode, Value: DefTiDBTxnMode, AllowEmptyAll: true, Type: TypeEnum, PossibleValues: []string{PessimisticTxnMode, OptimisticTxnMode}, SetSession: func(s *SessionVars, val string) error { s.TxnMode = strings.ToUpper(val) return nil }}, @@ -2981,6 +2981,11 @@ var SetCharsetVariables = []string{ const ( // MaskPwd is the mask of password for LDAP variables. MaskPwd = "******" + + // PessimiticTxnMode is the name for tidb_txn_mode system variable. + PessimisticTxnMode = "pessimistic" + // OptimisticTxnMode is the name for tidb_txn_mode system variable. + OptimisticTxnMode = "optimistic" ) const ( diff --git a/pkg/sessionctx/variable/tidb_vars.go b/pkg/sessionctx/variable/tidb_vars.go index 1419de5f8d0af..b11b236f61548 100644 --- a/pkg/sessionctx/variable/tidb_vars.go +++ b/pkg/sessionctx/variable/tidb_vars.go @@ -1209,7 +1209,7 @@ const ( DefTiFlashQuerySpillRatio = 0.7 DefTiDBEnableTiFlashPipelineMode = true DefTiDBMPPStoreFailTTL = "60s" - DefTiDBTxnMode = "" + DefTiDBTxnMode = PessimisticTxnMode DefTiDBRowFormatV1 = 1 DefTiDBRowFormatV2 = 2 DefTiDBDDLReorgWorkerCount = 4 From 8d90deeae49e7e580e2ffd439ec44d6cc1701920 Mon Sep 17 00:00:00 2001 From: HighPon Date: Sat, 11 Nov 2023 18:45:05 +0900 Subject: [PATCH 02/12] fix: update test --- pkg/infoschema/BUILD.bazel | 2 +- pkg/infoschema/infoschema_test.go | 10 ---------- tests/integrationtest/r/infoschema/tables.result | 2 +- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/pkg/infoschema/BUILD.bazel b/pkg/infoschema/BUILD.bazel index 894914d4397e3..b88917fbca2a0 100644 --- a/pkg/infoschema/BUILD.bazel +++ b/pkg/infoschema/BUILD.bazel @@ -72,7 +72,7 @@ go_test( ], embed = [":infoschema"], flaky = True, - shard_count = 9, + shard_count = 8, deps = [ "//pkg/ddl/placement", "//pkg/domain", diff --git a/pkg/infoschema/infoschema_test.go b/pkg/infoschema/infoschema_test.go index 7856deddda944..0e4461744270f 100644 --- a/pkg/infoschema/infoschema_test.go +++ b/pkg/infoschema/infoschema_test.go @@ -30,7 +30,6 @@ import ( "github.com/pingcap/tidb/pkg/parser/model" "github.com/pingcap/tidb/pkg/parser/mysql" "github.com/pingcap/tidb/pkg/session" - "github.com/pingcap/tidb/pkg/sessionctx/variable" "github.com/pingcap/tidb/pkg/store/mockstore" "github.com/pingcap/tidb/pkg/table" "github.com/pingcap/tidb/pkg/testkit" @@ -851,12 +850,3 @@ func TestInfoSchemaCreateTableLike(t *testing.T) { require.Equal(t, tblInfo.Indices[0].Name.O, "idx") require.Equal(t, tblInfo.Indices[0].ID, int64(1)) } - -func TestCheckDefaultValueForTidbTxnMode(t *testing.T) { - store := testkit.CreateMockStore(t) - tk := testkit.NewTestKit(t, store) - - rs, err := tk.Exec("SELECT DEFAULT_VALUE FROM information_schema.variables_info WHERE variable_name = 'tidb_txn_mode';") - require.NoError(t, err) - require.Equal(t, tk.ResultSetToResult(rs, "").Rows()[0][0], variable.PessimisticTxnMode) -} diff --git a/tests/integrationtest/r/infoschema/tables.result b/tests/integrationtest/r/infoschema/tables.result index 83f3be1c312eb..86f5d2f8c6453 100644 --- a/tests/integrationtest/r/infoschema/tables.result +++ b/tests/integrationtest/r/infoschema/tables.result @@ -230,7 +230,7 @@ innodb_compression_level GLOBAL 6 8 NULL NULL NULL YES SET GLOBAL innodb_compression_level = DEFAULT; SELECT * FROM variables_info WHERE variable_name = 'tidb_txn_mode'; VARIABLE_NAME VARIABLE_SCOPE DEFAULT_VALUE CURRENT_VALUE MIN_VALUE MAX_VALUE POSSIBLE_VALUES IS_NOOP -tidb_txn_mode SESSION,GLOBAL pessimistic NULL NULL pessimistic,optimistic NO +tidb_txn_mode SESSION,GLOBAL pessimistic pessimistic NULL NULL pessimistic,optimistic NO SELECT * FROM variables_info WHERE variable_name = 'max_connections' AND is_noop='NO'; VARIABLE_NAME VARIABLE_SCOPE DEFAULT_VALUE CURRENT_VALUE MIN_VALUE MAX_VALUE POSSIBLE_VALUES IS_NOOP max_connections INSTANCE 0 0 0 100000 NULL NO From a4a982926f0cf7e6bd2696451309949faac431e0 Mon Sep 17 00:00:00 2001 From: HighPon Date: Tue, 14 Nov 2023 00:35:05 +0900 Subject: [PATCH 03/12] fix: set tidb_tx_mode when upgrading --- pkg/session/bootstrap.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index bff40d15c6c8c..c9a12f0f04895 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1713,6 +1713,10 @@ func upgradeToVer32(s sessiontypes.Session, ver int64) { return } doReentrantDDL(s, "ALTER TABLE mysql.tables_priv MODIFY table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant', 'Index', 'Alter', 'Create View', 'Show View', 'Trigger', 'References')") + + // Set optimistic to tidb_tx_mode. + // Related issue: https://github.com/pingcap/tidb/issues/48492 + variable.SetSysVar(variable.TiDBTxnMode, variable.OptimisticTxnMode) } func upgradeToVer33(s sessiontypes.Session, ver int64) { @@ -1763,6 +1767,12 @@ func upgradeToVer38(s sessiontypes.Session, ver int64) { return } doReentrantDDL(s, CreateGlobalPrivTable) + + // Set optimistic to tidb_tx_mode. + // Related issue: https://github.com/pingcap/tidb/issues/48492 + if variable.GetSysVar(variable.TiDBTxnMode).Value == "" { + variable.SetSysVar(variable.TiDBTxnMode, variable.OptimisticTxnMode) + } } func writeNewCollationParameter(s sessiontypes.Session, flag bool) { From 8513063be71bdc138cc52dda6c68712d3b8a5a96 Mon Sep 17 00:00:00 2001 From: HighPon Date: Wed, 15 Nov 2023 02:59:25 +0900 Subject: [PATCH 04/12] fix --- pkg/session/bootstrap.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index c9a12f0f04895..85d2488333415 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1716,7 +1716,9 @@ func upgradeToVer32(s sessiontypes.Session, ver int64) { // Set optimistic to tidb_tx_mode. // Related issue: https://github.com/pingcap/tidb/issues/48492 - variable.SetSysVar(variable.TiDBTxnMode, variable.OptimisticTxnMode) + sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s VALUES('%s', '%s') ON DUPLICATE KEY UPDATE VARIABLE_VALUE = '%s'", + mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.OptimisticTxnMode, variable.OptimisticTxnMode) + mustExecute(s, sql) } func upgradeToVer33(s sessiontypes.Session, ver int64) { @@ -1770,9 +1772,12 @@ func upgradeToVer38(s sessiontypes.Session, ver int64) { // Set optimistic to tidb_tx_mode. // Related issue: https://github.com/pingcap/tidb/issues/48492 - if variable.GetSysVar(variable.TiDBTxnMode).Value == "" { - variable.SetSysVar(variable.TiDBTxnMode, variable.OptimisticTxnMode) - } + sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s ("+ + "SELECT '%s', '%s' WHERE NOT EXISTS (SELECT * FROM %s.%s WHERE VARIABLE_NAME = '%s' AND VARIABLE_VALUE = '%s')"+ + ")ON DUPLICATE KEY UPDATE VARIABLE_VALUE = VALUES(VARIABLE_VALUE)", + mysql.SystemDB, mysql.GlobalVariablesTable, + variable.TiDBTxnMode, variable.OptimisticTxnMode, mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.PessimisticTxnMode) + mustExecute(s, sql) } func writeNewCollationParameter(s sessiontypes.Session, flag bool) { From ffa336bb06c685b11bcd7563917757aa637cf7b8 Mon Sep 17 00:00:00 2001 From: HighPon Date: Sun, 19 Nov 2023 17:48:02 +0900 Subject: [PATCH 05/12] fix: typo --- pkg/sessionctx/variable/sysvar.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/sessionctx/variable/sysvar.go b/pkg/sessionctx/variable/sysvar.go index 5d7e465a00e4b..d99d356413e06 100644 --- a/pkg/sessionctx/variable/sysvar.go +++ b/pkg/sessionctx/variable/sysvar.go @@ -2982,7 +2982,7 @@ const ( // MaskPwd is the mask of password for LDAP variables. MaskPwd = "******" - // PessimiticTxnMode is the name for tidb_txn_mode system variable. + // PessimisticTxnMode is the name for tidb_txn_mode system variable. PessimisticTxnMode = "pessimistic" // OptimisticTxnMode is the name for tidb_txn_mode system variable. OptimisticTxnMode = "optimistic" From 22737ef15945db0b8dc48631e0ab6bbbcf7d9b94 Mon Sep 17 00:00:00 2001 From: HighPon Date: Mon, 20 Nov 2023 05:50:26 +0900 Subject: [PATCH 06/12] fix --- pkg/session/bootstrap.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 85d2488333415..8a42f53204d24 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1038,6 +1038,10 @@ const ( // add concurrency/priority/create_time/end_time to `mysql.tidb_background_subtask`/`mysql.tidb_background_subtask_history` // add idx_exec_id(exec_id) to `mysql.tidb_background_subtask` version180 = 180 + + // version 181 + // set tidb_txn_mode to Optimistic when tidb_txn_mode is not set. + version181 = 181 ) // currentBootstrapVersion is defined as a variable, so we can modify its value for testing. @@ -1713,12 +1717,6 @@ func upgradeToVer32(s sessiontypes.Session, ver int64) { return } doReentrantDDL(s, "ALTER TABLE mysql.tables_priv MODIFY table_priv SET('Select','Insert','Update','Delete','Create','Drop','Grant', 'Index', 'Alter', 'Create View', 'Show View', 'Trigger', 'References')") - - // Set optimistic to tidb_tx_mode. - // Related issue: https://github.com/pingcap/tidb/issues/48492 - sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s VALUES('%s', '%s') ON DUPLICATE KEY UPDATE VARIABLE_VALUE = '%s'", - mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.OptimisticTxnMode, variable.OptimisticTxnMode) - mustExecute(s, sql) } func upgradeToVer33(s sessiontypes.Session, ver int64) { @@ -1769,15 +1767,6 @@ func upgradeToVer38(s sessiontypes.Session, ver int64) { return } doReentrantDDL(s, CreateGlobalPrivTable) - - // Set optimistic to tidb_tx_mode. - // Related issue: https://github.com/pingcap/tidb/issues/48492 - sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s ("+ - "SELECT '%s', '%s' WHERE NOT EXISTS (SELECT * FROM %s.%s WHERE VARIABLE_NAME = '%s' AND VARIABLE_VALUE = '%s')"+ - ")ON DUPLICATE KEY UPDATE VARIABLE_VALUE = VALUES(VARIABLE_VALUE)", - mysql.SystemDB, mysql.GlobalVariablesTable, - variable.TiDBTxnMode, variable.OptimisticTxnMode, mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.PessimisticTxnMode) - mustExecute(s, sql) } func writeNewCollationParameter(s sessiontypes.Session, flag bool) { @@ -2948,6 +2937,18 @@ func upgradeToVer180(s sessiontypes.Session, ver int64) { doReentrantDDL(s, "ALTER TABLE mysql.tidb_background_subtask ADD INDEX idx_exec_id(exec_id)", dbterror.ErrDupKeyName) } +func upgradeToVer181(s sessiontypes.Session, ver int64) { + if ver >= version181 { + return + } + sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s ("+ + "SELECT '%s', '%s' WHERE NOT EXISTS (SELECT * FROM %s.%s WHERE VARIABLE_NAME = '%s' AND VARIABLE_VALUE = '%s')"+ + ")ON DUPLICATE KEY UPDATE VARIABLE_VALUE = VALUES(VARIABLE_VALUE)", + mysql.SystemDB, mysql.GlobalVariablesTable, + variable.TiDBTxnMode, variable.OptimisticTxnMode, mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.PessimisticTxnMode) + mustExecute(s, sql) +} + func writeOOMAction(s sessiontypes.Session) { comment := "oom-action is `log` by default in v3.0.x, `cancel` by default in v4.0.11+" mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, %?) ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`, From caca26dc7a47fa2687fc33266cb6c56ccc932330 Mon Sep 17 00:00:00 2001 From: HighPon Date: Mon, 20 Nov 2023 13:06:52 +0900 Subject: [PATCH 07/12] fix --- pkg/session/bootstrap.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 8a42f53204d24..23e9751d93bb9 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -2941,11 +2941,9 @@ func upgradeToVer181(s sessiontypes.Session, ver int64) { if ver >= version181 { return } - sql := fmt.Sprintf("INSERT HIGH_PRIORITY INTO %s.%s ("+ - "SELECT '%s', '%s' WHERE NOT EXISTS (SELECT * FROM %s.%s WHERE VARIABLE_NAME = '%s' AND VARIABLE_VALUE = '%s')"+ - ")ON DUPLICATE KEY UPDATE VARIABLE_VALUE = VALUES(VARIABLE_VALUE)", + sql := fmt.Sprintf("INSERT HIGH_PRIORITY IGNORE INTO %s.%s VALUES('%s', '%s')", mysql.SystemDB, mysql.GlobalVariablesTable, - variable.TiDBTxnMode, variable.OptimisticTxnMode, mysql.SystemDB, mysql.GlobalVariablesTable, variable.TiDBTxnMode, variable.PessimisticTxnMode) + variable.TiDBTxnMode, variable.OptimisticTxnMode) mustExecute(s, sql) } From 90543e4b181f875c791e8975e05638474c7eed35 Mon Sep 17 00:00:00 2001 From: HighPon Date: Sat, 2 Dec 2023 16:06:16 +0900 Subject: [PATCH 08/12] fix --- pkg/session/bootstrap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 23e9751d93bb9..eec1ecc2e3b43 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1046,7 +1046,7 @@ const ( // currentBootstrapVersion is defined as a variable, so we can modify its value for testing. // please make sure this is the largest version -var currentBootstrapVersion int64 = version180 +var currentBootstrapVersion int64 = version181 // DDL owner key's expired time is ManagerSessionTTL seconds, we should wait the time and give more time to have a chance to finish it. var internalSQLTimeout = owner.ManagerSessionTTL + 15 @@ -1202,6 +1202,7 @@ var ( upgradeToVer178, upgradeToVer179, upgradeToVer180, + upgradeToVer181, } ) From 84b24c8c112d50b1302ac7145f8e52163f1b44c7 Mon Sep 17 00:00:00 2001 From: Hangjie Mo Date: Fri, 29 Dec 2023 14:56:33 +0800 Subject: [PATCH 09/12] Apply suggestions from code review --- pkg/session/bootstrap.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 927572ad6b535..6a7c1fb743c18 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1042,9 +1042,9 @@ const ( // add column `bdr_role` to `mysql.tidb_ddl_job` and `mysql.tidb_ddl_history`. version181 = 181 - // version 182 - // set tidb_txn_mode to Optimistic when tidb_txn_mode is not set. - version182 = 182 + // version 182 + // set tidb_txn_mode to Optimistic when tidb_txn_mode is not set. + version182 = 182 ) // currentBootstrapVersion is defined as a variable, so we can modify its value for testing. From edaf34695cbc5c31a3f9b98f41e6a19c46d55abc Mon Sep 17 00:00:00 2001 From: Hangjie Mo Date: Fri, 29 Dec 2023 15:02:25 +0800 Subject: [PATCH 10/12] Apply suggestions from code review --- pkg/session/bootstrap.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 6a7c1fb743c18..3927ec7e40105 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1041,7 +1041,6 @@ const ( // version 181 // add column `bdr_role` to `mysql.tidb_ddl_job` and `mysql.tidb_ddl_history`. version181 = 181 - // version 182 // set tidb_txn_mode to Optimistic when tidb_txn_mode is not set. version182 = 182 From 015fa597c0d1f97f496e0ab7826cabaf38d50877 Mon Sep 17 00:00:00 2001 From: Hangjie Mo Date: Fri, 29 Dec 2023 15:02:47 +0800 Subject: [PATCH 11/12] Update pkg/session/bootstrap.go --- pkg/session/bootstrap.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index 3927ec7e40105..b9d3ea3f4d5c6 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1041,6 +1041,7 @@ const ( // version 181 // add column `bdr_role` to `mysql.tidb_ddl_job` and `mysql.tidb_ddl_history`. version181 = 181 + // version 182 // set tidb_txn_mode to Optimistic when tidb_txn_mode is not set. version182 = 182 From 4f170b9b310f29322654483ba40cdcb38dc51aee Mon Sep 17 00:00:00 2001 From: Hangjie Mo Date: Fri, 29 Dec 2023 15:10:05 +0800 Subject: [PATCH 12/12] Update bootstrap.go --- pkg/session/bootstrap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/session/bootstrap.go b/pkg/session/bootstrap.go index b9d3ea3f4d5c6..c5a62bd2a9be6 100644 --- a/pkg/session/bootstrap.go +++ b/pkg/session/bootstrap.go @@ -1049,7 +1049,7 @@ const ( // currentBootstrapVersion is defined as a variable, so we can modify its value for testing. // please make sure this is the largest version -var currentBootstrapVersion int64 = version181 +var currentBootstrapVersion int64 = version182 // DDL owner key's expired time is ManagerSessionTTL seconds, we should wait the time and give more time to have a chance to finish it. var internalSQLTimeout = owner.ManagerSessionTTL + 15 @@ -1206,6 +1206,7 @@ var ( upgradeToVer179, upgradeToVer180, upgradeToVer181, + upgradeToVer182, } )