deduplicate put code
This commit is contained in:
parent
1a59b73adc
commit
a9403b42f0
@ -87,14 +87,7 @@ func (s *BadgerMarkSet) Mark(c cid.Cid) error {
|
|||||||
return errMarkSetClosed
|
return errMarkSetClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
s.pend[string(c.Hash())] = struct{}{}
|
return s.put(string(c.Hash()))
|
||||||
|
|
||||||
if len(s.pend) < badgerMarkSetBatchSize {
|
|
||||||
s.mx.Unlock()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return s.putPending()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BadgerMarkSet) Has(c cid.Cid) (bool, error) {
|
func (s *BadgerMarkSet) Has(c cid.Cid) (bool, error) {
|
||||||
@ -153,13 +146,7 @@ func (s *BadgerMarkSet) Visit(c cid.Cid) (bool, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s.pend[pendKey] = struct{}{}
|
if err := s.put(pendKey); err != nil {
|
||||||
if len(s.pend) < badgerMarkSetBatchSize {
|
|
||||||
s.mx.Unlock()
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := s.putPending(); err != nil {
|
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,8 +190,14 @@ func (s *BadgerMarkSet) tryDB(key []byte) (has bool, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// writer holds the exclusive lock; putPending releases it
|
// writer holds the exclusive lock; put releases it
|
||||||
func (s *BadgerMarkSet) putPending() error {
|
func (s *BadgerMarkSet) put(key string) error {
|
||||||
|
s.pend[key] = struct{}{}
|
||||||
|
if len(s.pend) < badgerMarkSetBatchSize {
|
||||||
|
s.mx.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
pend := s.pend
|
pend := s.pend
|
||||||
seqno := s.seqno
|
seqno := s.seqno
|
||||||
s.seqno++
|
s.seqno++
|
||||||
|
Loading…
Reference in New Issue
Block a user