TileDB-Inc/TileDB-Py

consolidating a group with mode=`group_meta` fails via tiledb.consolidate high-level function

bkmartinjr opened this issue · 1 comments

The addition of group metadata consolidation in 0.24.0 still appears to have a bug when the high-level tiledb.consolidate is called. The high level function tiledb.vacuum works on both arrays and groups, and I assumed tiledb.consolidate would as well.

Filing on the assumption that the high-level functions should work for both arrays and groups. If this is a mistaken assumption, please close as not-a-bug!

In [10]: tiledb.__version__
Out[10]: '0.24.0'

In [11]: tiledb.Group("tmp/census/2023-12-24/soma/census_data/mus_musculus/ms/RNA/X/")
Out[11]:  GROUP

In [12]: ls -l tmp/census/2023-12-24/soma/census_data/mus_musculus/ms/RNA/X
total 8
drwxr-xr-x 2 bruce bruce 4096 Dec 24 11:28 __group/
drwxr-xr-x 2 bruce bruce 4096 Dec 24 11:28 __meta/
-rw-r--r-- 1 bruce bruce    0 Dec 24 11:28 __tiledb_group.tdb

In [13]: tiledb.consolidate("tmp/census/2023-12-24/soma/census_data/mus_musculus/ms/RNA/X", config=tiledb.Config({"sm.consolidation.mode":"group_meta"}))
---------------------------------------------------------------------------
TileDBError                               Traceback (most recent call last)
Cell In[13], line 1
----> 1 tiledb.consolidate("tmp/census/2023-12-24/soma/census_data/mus_musculus/ms/RNA/X", config=tiledb.Config({"sm.consolidation.mode":"group_meta"}))

File tiledb/libtiledb.pyx:3396, in tiledb.libtiledb.consolidate()

File tiledb/libtiledb.pyx:3483, in tiledb.libtiledb._consolidate_timestamp()

File tiledb/libtiledb.pyx:350, in tiledb.libtiledb._raise_ctx_err()

File tiledb/libtiledb.pyx:335, in tiledb.libtiledb._raise_tiledb_error()

TileDBError: [TileDB::StorageManager] Error: Cannot consolidate array; Array does not exist

Hi Bruce,

To consolidate group metadata please use tiledb.Group.consolidate_metadata.

Example is here.

Thanks.