nil map/bf on markset close
This commit is contained in:
parent
ec586a852a
commit
aec2ba2c82
@ -3,6 +3,7 @@ package splitstore
|
|||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ var _ MarkSetEnv = (*BloomMarkSetEnv)(nil)
|
|||||||
|
|
||||||
type BloomMarkSet struct {
|
type BloomMarkSet struct {
|
||||||
salt []byte
|
salt []byte
|
||||||
|
mx sync.Mutex
|
||||||
bf *bbloom.Bloom
|
bf *bbloom.Bloom
|
||||||
ts bool
|
ts bool
|
||||||
}
|
}
|
||||||
@ -68,21 +70,29 @@ func (s *BloomMarkSet) saltedKey(cid cid.Cid) []byte {
|
|||||||
|
|
||||||
func (s *BloomMarkSet) Mark(cid cid.Cid) error {
|
func (s *BloomMarkSet) Mark(cid cid.Cid) error {
|
||||||
if s.ts {
|
if s.ts {
|
||||||
s.bf.AddTS(s.saltedKey(cid))
|
s.mx.Lock()
|
||||||
} else {
|
defer s.mx.Unlock()
|
||||||
s.bf.Add(s.saltedKey(cid))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.bf.Add(s.saltedKey(cid))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BloomMarkSet) Has(cid cid.Cid) (bool, error) {
|
func (s *BloomMarkSet) Has(cid cid.Cid) (bool, error) {
|
||||||
if s.ts {
|
if s.ts {
|
||||||
return s.bf.HasTS(s.saltedKey(cid)), nil
|
s.mx.Lock()
|
||||||
|
defer s.mx.Unlock()
|
||||||
}
|
}
|
||||||
return s.bf.HasTS(s.saltedKey(cid)), nil
|
|
||||||
|
return s.bf.Has(s.saltedKey(cid)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BloomMarkSet) Close() error {
|
func (s *BloomMarkSet) Close() error {
|
||||||
|
if s.ts {
|
||||||
|
s.mx.Lock()
|
||||||
|
defer s.mx.Unlock()
|
||||||
|
|
||||||
|
}
|
||||||
|
s.bf = nil
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -57,5 +57,11 @@ func (s *MapMarkSet) Has(cid cid.Cid) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *MapMarkSet) Close() error {
|
func (s *MapMarkSet) Close() error {
|
||||||
|
if s.ts {
|
||||||
|
s.mx.Lock()
|
||||||
|
defer s.mx.Unlock()
|
||||||
|
|
||||||
|
}
|
||||||
|
s.set = nil
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user