mirror of https://github.com/Xhofe/alist
fix(search): don't delete virtual folder while update indexes (close #2677)
parent
1640f06e13
commit
5043815d48
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue