private void fixSplits(final KVStore<DatasetSplitId, DatasetSplit> splitsStore, DatasetConfig config) { final long version = config.getReadDefinition().getSplitVersion(); // Get old splits final FindByRange<DatasetSplitId> query = DatasetSplitId.unsafeGetSplitsRange(config); for (Entry<DatasetSplitId, DatasetSplit> entry : splitsStore.find(query)) { final DatasetSplitId oldId = entry.getKey(); final DatasetSplit split = entry.getValue(); // Generate new Id and compare with old id final DatasetSplitId newId = DatasetSplitId.of(config, split, version); if (oldId.equals(newId)) { continue; } // Delete the previous entry and add a new one splitsStore.delete(oldId); splitsStore.put(newId, split.setVersion(null)); } }
for(Map.Entry<DatasetSplitId, DatasetSplit> entry : splitsStore.find(DatasetSplitId.unsafeGetSplitsRange(ds1))) { DatasetSplitId splitId = entry.getKey(); assertThat(splitId.getDatasetId(), is("foo")); for(Map.Entry<DatasetSplitId, DatasetSplit> entry : splitsStore.find(DatasetSplitId.unsafeGetSplitsRange(ds2))) { DatasetSplitId splitId = entry.getKey(); assertThat(splitId.getDatasetId(), startsWith("foo")); // unescaped dataset split id might generate invalid unicode when unescaped for(Map.Entry<DatasetSplitId, DatasetSplit> entry : splitsStore.find(DatasetSplitId.unsafeGetSplitsRange(ds3))) { DatasetSplitId splitId = entry.getKey();