Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tiledb.walk() hangs indefinitely when blob with folder name exists #1845

Closed
The-Fonz opened this issue Oct 12, 2023 · 2 comments
Closed

tiledb.walk() hangs indefinitely when blob with folder name exists #1845

The-Fonz opened this issue Oct 12, 2023 · 2 comments

Comments

@The-Fonz
Copy link

In cloud blob storage, there is no concept of a folder, just a concept of a "separator" like /. Blobs with the name of your intended folder can exist. When walking a bucket that has a blob with the "folder" name, tiledb.walk() hangs indefinitely.

To reproduce:

tiledb v0.23.1

Bucket with group/array like this:

# Nothing wrong here
gs://bucket/group/__tiledb_group.tdb
gs://bucket/group/array/...

# Hangs indefinitely when walking with tiledb.walk("gs://bucket/")
gs://bucket/group/
gs://bucket/group/__tiledb_group.tdb
gs://bucket/group/array/...
@ihnorton
Copy link
Member

ihnorton commented Oct 12, 2023

Hi @The-Fonz, just to clarify, in the second scenario there is an object called group? (along with items underneath the prefix group/...)

gs://bucket/group # <- This is an object?

@kounelisagis
Copy link
Member

Hi @The-Fonz, thank you for opening the issue.

After testing the following with tiledb==0.32.3:

import tiledb

# write a group and array to the cloud
grp_path = "gs://tiledb-agis/group"
tiledb.Group.create(grp_path)

grp = tiledb.Group(grp_path, "w")
array_path = "gs://tiledb-agis/group/array"
domain = tiledb.Domain(tiledb.Dim(domain=(1, 8), tile=2))
a1 = tiledb.Attr("val", dtype="f8")
schema = tiledb.ArraySchema(domain=domain, attrs=(a1,))
tiledb.Array.create(array_path, schema)

grp.add(array_path)
grp.close()

# walk the cloud
def callback(path, type):
    print(path, type)

tiledb.walk("gs://tiledb-agis/", callback)

it successfully prints:

gs://tiledb-agis/group group
gs://tiledb-agis/group/array array

Seems like the issue doesn't exist anymore. Feel free to let us know if you have anything to add.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants