From 6c7d7b34ea8d5afaedb6d988f3f4614ff0eb617d Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 12 Mar 2020 23:36:04 +0800 Subject: [PATCH 1/2] Fix master/slave bug --- engine.go | 1 - engine_group.go | 8 ++++---- engine_group_test.go | 27 +++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 engine_group_test.go diff --git a/engine.go b/engine.go index f2e80855..c6fd5c7e 100644 --- a/engine.go +++ b/engine.go @@ -32,7 +32,6 @@ import ( // Commonly, an application only need one engine type Engine struct { cacherMgr *caches.Manager - db *core.DB defaultContext context.Context dialect dialects.Dialect engineGroup *EngineGroup diff --git a/engine_group.go b/engine_group.go index 38b64ca2..868d4dc9 100644 --- a/engine_group.go +++ b/engine_group.go @@ -161,17 +161,17 @@ func (eg *EngineGroup) SetMapper(mapper names.Mapper) { // SetMaxIdleConns set the max idle connections on pool, default is 2 func (eg *EngineGroup) SetMaxIdleConns(conns int) { - eg.Engine.db.SetMaxIdleConns(conns) + eg.Engine.dialect.DB().SetMaxIdleConns(conns) for i := 0; i < len(eg.slaves); i++ { - eg.slaves[i].db.SetMaxIdleConns(conns) + eg.slaves[i].dialect.DB().SetMaxIdleConns(conns) } } // SetMaxOpenConns is only available for go 1.2+ func (eg *EngineGroup) SetMaxOpenConns(conns int) { - eg.Engine.db.SetMaxOpenConns(conns) + eg.Engine.dialect.DB().SetMaxOpenConns(conns) for i := 0; i < len(eg.slaves); i++ { - eg.slaves[i].db.SetMaxOpenConns(conns) + eg.slaves[i].dialect.DB().SetMaxOpenConns(conns) } } diff --git a/engine_group_test.go b/engine_group_test.go new file mode 100644 index 00000000..7d1068ec --- /dev/null +++ b/engine_group_test.go @@ -0,0 +1,27 @@ +// Copyright 2020 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "xorm.io/xorm/log" +) + +func TestEngineGroup(t *testing.T) { + assert.NoError(t, prepareEngine()) + + master := testEngine.(*Engine) + eg, err := NewEngineGroup(master, []*Engine{master}) + assert.NoError(t, err) + + eg.SetMaxIdleConns(10) + eg.SetMaxOpenConns(100) + eg.SetTableMapper(master.GetTableMapper()) + eg.SetColumnMapper(master.GetColumnMapper()) + eg.SetLogLevel(log.LOG_INFO) + eg.ShowSQL(true) +} -- 2.40.1 From af9b1378e52ba36a73332785e3f65f3bb3e2ff40 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 12 Mar 2020 23:54:27 +0800 Subject: [PATCH 2/2] fix test --- engine_group_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/engine_group_test.go b/engine_group_test.go index 7d1068ec..76aad6d2 100644 --- a/engine_group_test.go +++ b/engine_group_test.go @@ -9,12 +9,18 @@ import ( "github.com/stretchr/testify/assert" "xorm.io/xorm/log" + "xorm.io/xorm/schemas" ) func TestEngineGroup(t *testing.T) { assert.NoError(t, prepareEngine()) master := testEngine.(*Engine) + if master.Dialect().URI().DBType == schemas.SQLITE { + t.Skip() + return + } + eg, err := NewEngineGroup(master, []*Engine{master}) assert.NoError(t, err) -- 2.40.1