Merge pull request #11855 from tangcong/automated-cherry-pick-of-#11817-origin-release-3.4

Automated cherry pick of #11817 on release-3.4
This commit is contained in:
Gyuho Lee 2020-05-07 20:00:26 -07:00 committed by GitHub
commit 2333c727a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -163,14 +163,18 @@ func NewStore(lg *zap.Logger, b backend.Backend, le lease.Lessor, ig ConsistentI
func (s *store) compactBarrier(ctx context.Context, ch chan struct{}) {
if ctx == nil || ctx.Err() != nil {
s.mu.Lock()
select {
case <-s.stopc:
default:
// fix deadlock in mvcc,for more information, please refer to pr 11817.
// s.stopc is only updated in restore operation, which is called by apply
// snapshot call, compaction and apply snapshot requests are serialized by
// raft, and do not happen at the same time.
s.mu.Lock()
f := func(ctx context.Context) { s.compactBarrier(ctx, ch) }
s.fifoSched.Schedule(f)
s.mu.Unlock()
}
s.mu.Unlock()
return
}
close(ch)