Skip to content

2D string variable update causes HDF Error when rereading file #1366

Open
@robin-cls

Description

@robin-cls

Hello,

I encountered a problem when trying to save a string variable. The goal is to update part of a dataset, so I am using a slice to select relevant part of a 2D-string table, and then assign the new values. While it works well for integer and floating variables, the 'partial' update of a string variable does not go well and raises an HDFError when rereading (see the image after the reproducing steps).

The problem might be linked to the combination of the extensible dimension feature and the 2D case because:

  • replacing the dim_0=None by dim_0=5 --> OK
  • Partial update of 1D string variable --> OK

Here are the steps to reproduce:

with netCDF4.Dataset('broken.nc', mode='w') as handler:
    handler.createDimension("dim_0", None)
    handler.createDimension("dim_1", 5)
    handler.createVariable('var_str', str, ('dim_0', 'dim_1'), fill_value='no_data')
    
    handler["var_str"][2:5, 1:4] = np.full((3, 3), fill_value='foo', dtype=object)

# Error appears when triggering a netcdf close. Something might be getting corrupted somewhere
with netCDF4.Dataset('broken.nc', mode='r') as handler:
    print(handler["var_str"][...])

image

I work in a Conda environment installed on RHEL8 with :
python=3.11
h5netcdf=1.2.0
libnetcdf=4.9.2
netcdf4=1.7.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions