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()
|
return storagesMap.Values()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func HasStorage(mountPath string) bool {
|
||||||
|
return storagesMap.Has(mountPath)
|
||||||
|
}
|
||||||
|
|
||||||
func GetStorageByVirtualPath(virtualPath string) (driver.Driver, error) {
|
func GetStorageByVirtualPath(virtualPath string) (driver.Driver, error) {
|
||||||
storageDriver, ok := storagesMap.Load(virtualPath)
|
storageDriver, ok := storagesMap.Load(virtualPath)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
@ -201,7 +201,7 @@ func Update(parent string, objs []model.Obj) {
|
||||||
toDelete := old.Difference(now)
|
toDelete := old.Difference(now)
|
||||||
toAdd := now.Difference(old)
|
toAdd := now.Difference(old)
|
||||||
for i := range nodes {
|
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))
|
log.Debugf("delete index: %s", path.Join(parent, nodes[i].Name))
|
||||||
err = instance.Del(ctx, path.Join(parent, nodes[i].Name))
|
err = instance.Del(ctx, path.Join(parent, nodes[i].Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -18,7 +18,7 @@ type Searcher interface {
|
||||||
Search(ctx context.Context, req model.SearchReq) ([]model.SearchNode, int64, error)
|
Search(ctx context.Context, req model.SearchReq) ([]model.SearchNode, int64, error)
|
||||||
// Index obj with parent
|
// Index obj with parent
|
||||||
Index(ctx context.Context, node model.SearchNode) error
|
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
|
BatchIndex(ctx context.Context, nodes []model.SearchNode) error
|
||||||
// Get by parent
|
// Get by parent
|
||||||
Get(ctx context.Context, parent string) ([]model.SearchNode, error)
|
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()
|
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) {
|
func (e *entry[V]) load() (value V, ok bool) {
|
||||||
p := atomic.LoadPointer(&e.p)
|
p := atomic.LoadPointer(&e.p)
|
||||||
if p == nil || p == expunged {
|
if p == nil || p == expunged {
|
||||||
|
|
Loading…
Reference in New Issue