Add concurrent table update test #561

Closed
typeless wants to merge 1 commits from test-concurrent-table-update into master
typeless commented 2017-04-08 12:41:29 +00:00 (Migrated from github.com)

The test can trigger data race, along with messages about the database is locked.

==================                                                                                                                                                                                 [91/1861]
WARNING: DATA RACE
Read at 0x00c420107a40 by goroutine 47:
  reflect.typedmemmove()
      /Users/mura/t/go1.8.1/src/runtime/mbarrier.go:253 +0x0
  reflect.packEface()
      /Users/mura/t/go1.8.1/src/reflect/value.go:112 +0x11c
  reflect.valueInterface()
      /Users/mura/t/go1.8.1/src/reflect/value.go:955 +0x18c
  reflect.Value.Interface()
      /Users/mura/t/go1.8.1/src/reflect/value.go:925 +0x51
  github.com/go-xorm/xorm.(*Engine).tbName()
      /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:554 +0x50
  github.com/go-xorm/xorm.(*Statement).setRefValue()
      /Users/mura/.go/src/github.com/go-xorm/xorm/statement.go:216 +0x188
  github.com/go-xorm/xorm.(*Session).innerInsert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:300 +0xc1
  github.com/go-xorm/xorm.(*Session).Insert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:49 +0x37f
  github.com/go-xorm/xorm.(*Engine).Insert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:1384 +0xb1
  github.com/go-xorm/xorm.TestUpdateMapConcurrently.func1()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:98 +0xc9

Previous write at 0x00c420107a40 by goroutine 12:
  reflect.typedmemmove()
      /Users/mura/t/go1.8.1/src/runtime/mbarrier.go:253 +0x0
  reflect.Value.Set()
      /Users/mura/t/go1.8.1/src/reflect/value.go:1353 +0xe9
  github.com/go-xorm/xorm.(*Session).innerInsert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:511 +0x1782
  github.com/go-xorm/xorm.(*Session).Insert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:49 +0x37f
  github.com/go-xorm/xorm.(*Engine).Insert()
      /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:1384 +0xb1
  github.com/go-xorm/xorm.TestUpdateMapConcurrently.func1()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:98 +0xc9

Goroutine 47 (running) created at:
  github.com/go-xorm/xorm.TestUpdateMapConcurrently()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:104 +0x2ab
  testing.tRunner()
      /Users/mura/t/go1.8.1/src/testing/testing.go:657 +0x107

Goroutine 12 (running) created at:
  github.com/go-xorm/xorm.TestUpdateMapConcurrently()
      /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:104 +0x2ab
  testing.tRunner()
      /Users/mura/t/go1.8.1/src/testing/testing.go:657 +0x107
==================
The test can trigger data race, along with messages about the database is locked. ``` ================== [91/1861] WARNING: DATA RACE Read at 0x00c420107a40 by goroutine 47: reflect.typedmemmove() /Users/mura/t/go1.8.1/src/runtime/mbarrier.go:253 +0x0 reflect.packEface() /Users/mura/t/go1.8.1/src/reflect/value.go:112 +0x11c reflect.valueInterface() /Users/mura/t/go1.8.1/src/reflect/value.go:955 +0x18c reflect.Value.Interface() /Users/mura/t/go1.8.1/src/reflect/value.go:925 +0x51 github.com/go-xorm/xorm.(*Engine).tbName() /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:554 +0x50 github.com/go-xorm/xorm.(*Statement).setRefValue() /Users/mura/.go/src/github.com/go-xorm/xorm/statement.go:216 +0x188 github.com/go-xorm/xorm.(*Session).innerInsert() /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:300 +0xc1 github.com/go-xorm/xorm.(*Session).Insert() /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:49 +0x37f github.com/go-xorm/xorm.(*Engine).Insert() /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:1384 +0xb1 github.com/go-xorm/xorm.TestUpdateMapConcurrently.func1() /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:98 +0xc9 Previous write at 0x00c420107a40 by goroutine 12: reflect.typedmemmove() /Users/mura/t/go1.8.1/src/runtime/mbarrier.go:253 +0x0 reflect.Value.Set() /Users/mura/t/go1.8.1/src/reflect/value.go:1353 +0xe9 github.com/go-xorm/xorm.(*Session).innerInsert() /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:511 +0x1782 github.com/go-xorm/xorm.(*Session).Insert() /Users/mura/.go/src/github.com/go-xorm/xorm/session_insert.go:49 +0x37f github.com/go-xorm/xorm.(*Engine).Insert() /Users/mura/.go/src/github.com/go-xorm/xorm/engine.go:1384 +0xb1 github.com/go-xorm/xorm.TestUpdateMapConcurrently.func1() /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:98 +0xc9 Goroutine 47 (running) created at: github.com/go-xorm/xorm.TestUpdateMapConcurrently() /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:104 +0x2ab testing.tRunner() /Users/mura/t/go1.8.1/src/testing/testing.go:657 +0x107 Goroutine 12 (running) created at: github.com/go-xorm/xorm.TestUpdateMapConcurrently() /Users/mura/.go/src/github.com/go-xorm/xorm/session_update_test.go:104 +0x2ab testing.tRunner() /Users/mura/t/go1.8.1/src/testing/testing.go:657 +0x107 ================== ```

Pull request closed

Sign in to join this conversation.
No description provided.