carloscm/gossie

Data race setting last failure times on connections

Opened this issue · 1 comments

==================
WARNING: DATA RACE
Write by goroutine 24:
  github.com/carloscm/gossie/src/gossie.(*connectionPool).blacklist()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:339 +0x159
  github.com/carloscm/gossie/src/gossie.(*connectionPool).acquire()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:312 +0x441
  github.com/carloscm/gossie/src/gossie.(*connectionPool).runWithRetries()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:237 +0x59
  github.com/carloscm/gossie/src/gossie.(*connectionPool).run()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:227 +0x5d
  github.com/carloscm/gossie/src/gossie.(*writer).Run()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/writer.go:172 +0x112
  main.func·015()
      /home/mjoiner/gopath/src/code.brandscreen.net/cortex/uniques-proxy/main.go:331 +0x3cf
  main.func·005()
      /home/mjoiner/gopath/src/code.brandscreen.net/cortex/uniques-proxy/main.go:149 +0x79
  gosched0()
      /home/mjoiner/src/go/src/pkg/runtime/proc.c:1231 +0x9f

Previous read by goroutine 21:
  github.com/carloscm/gossie/src/gossie.(*connectionPool).randomNode()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:280 +0x104
  github.com/carloscm/gossie/src/gossie.(*connectionPool).acquire()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:305 +0x207
  github.com/carloscm/gossie/src/gossie.(*connectionPool).runWithRetries()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:237 +0x59
  github.com/carloscm/gossie/src/gossie.(*connectionPool).run()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/connection.go:227 +0x5d
  github.com/carloscm/gossie/src/gossie.(*writer).Run()
      /home/mjoiner/gopath/src/github.com/carloscm/gossie/src/gossie/writer.go:172 +0x112
  main.func·015()
      /home/mjoiner/gopath/src/code.brandscreen.net/cortex/uniques-proxy/main.go:331 +0x3cf
  main.func·005()
      /home/mjoiner/gopath/src/code.brandscreen.net/cortex/uniques-proxy/main.go:149 +0x79
  gosched0()
      /home/mjoiner/src/go/src/pkg/runtime/proc.c:1231 +0x9f

This appears to be a race in modifying the node blacklist. It should be easy to fix by adding a mutex to access it. I am not working anymore in Gossie so any future maintainers of the library should fix this bug.