# Buggy code
def __getitem__(self, key):
    if isinstance(key, indexing.VectorizedIndexer):
        raise NotImplementedError(
            "Vectorized indexing for {} is not implemented. Load your "
            "data first with .load() or .compute().".format(type(self))
        )
    key = indexing.to_tuple(key)
    with self.datastore.ensure_open(autoclose=True):
        array = self.get_array()
        if key == () and self.ndim == 0:
            return array.get_value()
        return array[key]


# Traceback (ValueError)
import numpy as np
import xarray as xr

a = np.random.randn(4, 3)
a[1, 1] = np.NaN
da = xr.DataArray(a, dims=('y', 'x'), coords={'y':np.arange(4), 'x':np.arange(3)})
da.to_netcdf('test.nc')

with xr.open_dataarray('test.nc') as da:
da.dropna(dim='x', how='any')

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-37-8d137cf3a813> in <module>()
8
9 with xr.open_dataarray('test.nc') as da:
---> 10     da.dropna(dim='x', how='any')

~/.pyvirtualenvs/py3/lib/python3.5/site-packages/xarray/core/dataarray.py in dropna(self, dim, how, thresh)
1158         DataArray
1159         """
-> 1160         ds = self._to_temp_dataset().dropna(dim, how=how, thresh=thresh)
1161         return self._from_temp_dataset(ds)
1162

~/.pyvirtualenvs/py3/lib/python3.5/site-packages/xarray/core/dataset.py in dropna(self, dim, how, thresh, subset)
2292             raise TypeError('must specify how or thresh')
2293
-> 2294         return self.isel(**{dim: mask})
2295
2296     def fillna(self, value):

~/.pyvirtualenvs/py3/lib/python3.5/site-packages/xarray/core/dataset.py in isel(self, drop, **indexers)
1291         coord_names = set(variables).intersection(self._coord_names)
1292         selected = self._replace_vars_and_dims(variables,
-> 1293                                                coord_names=coord_names)
1294
1295         # Extract coordinates from indexers

~/.pyvirtualenvs/py3/lib/python3.5/site-packages/xarray/core/dataset.py in _replace_vars_and_dims(self, variables, coord_names, dims, attrs, inplace)
598         """
599         if dims is None:
--> 600             dims = calculate_dimensions(variables)
601         if inplace:
602             self._dims = dims

~/.pyvirtualenvs/py3/lib/python3.5/site-packages/xarray/core/dataset.py in calculate_dimensions(variables)
111                 raise ValueError('conflicting sizes for dimension %r: '
112                                  'length %s on %r and length %s on %r' %
--> 113                                  (dim, size, k, dims[dim], last_used[dim]))
114     return dims
115

ValueError: conflicting sizes for dimension 'y': length 2 on <this-array> and length 4 on 'y'

# Fixed code
def __getitem__(self, key):
    if isinstance(key, (indexing.VectorizedIndexer, indexing.OuterIndexer)):
        raise NotImplementedError(
            "Nio backend does not support vectorized / outer indexing. "
            "Load your data first with .load() or .compute(). "
            "Given {}".format(key)
        )
    key = indexing.to_tuple(key)
    with self.datastore.ensure_open(autoclose=True):
        array = self.get_array()
        if key == () and self.ndim == 0:
            return array.get_value()
        return array[key]