fix(search): don't delete virtual folder while update indexes (close #2677)

pull/2686/head
Noah Hsu 2022-12-11 14:59:58 +08:00
parent 1640f06e13
commit 5043815d48
4 changed files with 11 additions and 2 deletions

View File

@ -25,6 +25,10 @@ func GetAllStorages() []driver.Driver {
return storagesMap.Values()
}
func HasStorage(mountPath string) bool {
return storagesMap.Has(mountPath)
}
func GetStorageByVirtualPath(virtualPath string) (driver.Driver, error) {
storageDriver, ok := storagesMap.Load(virtualPath)
if !ok {

View File

@ -201,7 +201,7 @@ func Update(parent string, objs []model.Obj) {
toDelete := old.Difference(now)
toAdd := now.Difference(old)
for i := range nodes {
if toDelete.Contains(nodes[i].Name) {
if toDelete.Contains(nodes[i].Name) && !op.HasStorage(path.Join(parent, nodes[i].Name)) {
log.Debugf("delete index: %s", path.Join(parent, nodes[i].Name))
err = instance.Del(ctx, path.Join(parent, nodes[i].Name))
if err != nil {

View File

@ -18,7 +18,7 @@ type Searcher interface {
Search(ctx context.Context, req model.SearchReq) ([]model.SearchNode, int64, error)
// Index obj with parent
Index(ctx context.Context, node model.SearchNode) error
// Index obj with parent in batches
// BatchIndex obj with parent
BatchIndex(ctx context.Context, nodes []model.SearchNode) error
// Get by parent
Get(ctx context.Context, parent string) ([]model.SearchNode, error)

View File

@ -125,6 +125,11 @@ func (m *MapOf[K, V]) Load(key K) (value V, ok bool) {
return e.load()
}
func (m *MapOf[K, V]) Has(key K) bool {
_, ok := m.Load(key)
return ok
}
func (e *entry[V]) load() (value V, ok bool) {
p := atomic.LoadPointer(&e.p)
if p == nil || p == expunged {