diff --git a/weed/filer/arangodb/arangodb_store.go b/weed/filer/arangodb/arangodb_store.go index d27799b0e..27ed9132b 100644 --- a/weed/filer/arangodb/arangodb_store.go +++ b/weed/filer/arangodb/arangodb_store.go @@ -292,7 +292,7 @@ func (store *ArangodbStore) ListDirectoryEntries(ctx context.Context, dirPath ut } func (store *ArangodbStore) ListDirectoryPrefixedEntries(ctx context.Context, dirPath util.FullPath, startFileName string, includeStartFile bool, limit int64, prefix string, eachEntryFunc filer.ListEachEntryFunc) (lastFileName string, err error) { - targetCollection, err := store.extractBucketCollection(ctx, dirPath) + targetCollection, err := store.extractBucketCollection(ctx, dirPath+"/") if err != nil { return lastFileName, err } diff --git a/weed/filer/arangodb/helpers.go b/weed/filer/arangodb/helpers.go index c91ef2be5..943189781 100644 --- a/weed/filer/arangodb/helpers.go +++ b/weed/filer/arangodb/helpers.go @@ -48,25 +48,6 @@ func arrayToBytes(xs []uint64) []byte { return out[:first] } -// gets the bucket name out of filepath -func extractBucket(fullpath util.FullPath) (string, string) { - if !strings.HasPrefix(string(fullpath), BUCKET_PREFIX+"/") { - return "", string(fullpath) - } - if strings.Count(string(fullpath), "/") < 2 { - return "", string(fullpath) - } - bucketAndObjectKey := string(fullpath)[len("/buckets/"):] - t := strings.Index(bucketAndObjectKey, "/") - bucket := bucketAndObjectKey - shortPath := "/" - if t > 0 { - bucket = bucketAndObjectKey[:t] - shortPath = string(util.FullPath(bucketAndObjectKey[t:])) - } - return bucket, shortPath -} - // gets the collection the bucket points to from filepath func (store *ArangodbStore) extractBucketCollection(ctx context.Context, fullpath util.FullPath) (c driver.Collection, err error) { bucket, _ := extractBucket(fullpath) @@ -80,6 +61,25 @@ func (store *ArangodbStore) extractBucketCollection(ctx context.Context, fullpat return c, err } +// called by extractBucketCollection +func extractBucket(fullpath util.FullPath) (string, string) { + if !strings.HasPrefix(string(fullpath), BUCKET_PREFIX+"/") { + return "", string(fullpath) + } + if strings.Count(string(fullpath), "/") < 3 { + return "", string(fullpath) + } + bucketAndObjectKey := string(fullpath)[len(BUCKET_PREFIX+"/"):] + t := strings.Index(bucketAndObjectKey, "/") + bucket := bucketAndObjectKey + shortPath := "/" + if t > 0 { + bucket = bucketAndObjectKey[:t] + shortPath = string(util.FullPath(bucketAndObjectKey[t:])) + } + return bucket, shortPath +} + // get bucket collection from cache. if not exist, creates the buckets collection and grab it func (store *ArangodbStore) ensureBucket(ctx context.Context, bucket string) (bc driver.Collection, err error) { var ok bool