Details
-
Bug
-
Resolution: Fixed
-
Major
-
5.0.0
-
Untriaged
-
No
Description
As part of the go race detector run, it caught some places where we access metadata.CheckpointRecord without locking
type checkpointRecordWithLock struct {
|
ckpt *metadata.CheckpointRecord
|
lock *sync.RWMutex
|
}
|
For example,
func (ckmgr *CheckpointManager) do_checkpoint(vbno uint16, through_seqno_map map[uint16]uint64,
|
...
|
ckpt_record.Seqno = through_seqno
|
|
is one it complained about.
==================
|
WARNING: DATA RACE
|
Write at 0x00c42041e048 by goroutine 172:
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).do_checkpoint()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:1097 +0x433
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).performCkpt_internal()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:1048 +0x577
|
|
Previous read at 0x00c42041e048 by goroutine 123:
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).getVBTimestampForVB()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:715 +0x16a
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).startSeqnoGetter()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:692 +0x364
|
|
Goroutine 172 (running) created at:
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).PerformCkpt()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:998 +0x75d
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).CheckpointBeforeStop.func1()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:477 +0x42
|
|
Goroutine 123 (running) created at:
|
github.com/couchbase/goxdcr/pipeline_svc.(*CheckpointManager).SetVBTimestamps()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/pipeline_svc/checkpoint_manager.go:638 +0x15d2
|
github.com/couchbase/goxdcr/factory.(*XDCRFactory).SetStartSeqno()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/factory/xdcr_factory.go:674 +0xf8
|
github.com/couchbase/goxdcr/factory.(*XDCRFactory).SetStartSeqno-fm()
|
/Users/neil.huang/source/couchbase/goproj/src/github.com/couchbase/goxdcr/factory/xdcr_factory.go:249 +0x55
|
==================
|