Skip to content

Commit c0c802f

Browse files
Fix fragment commit delete ordering (#5774)
This change reverse the delete order of fragments and their associated commits to delete the commits first. This prevents errors that occurred previously if a commit was still present but the fragment had been removed or partially removed. Closes #5773 --- TYPE: BUG DESC: Delete commits before fragments
1 parent f803562 commit c0c802f

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

tiledb/sm/array/array.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,10 +670,12 @@ void Array::delete_fragments(
670670
auto& vfs = resources.vfs();
671671
throw_if_not_ok(parallel_for(
672672
&resources.compute_tp(), 0, fragment_uris.size(), [&](size_t i) {
673-
vfs.remove_dir(fragment_uris[i].uri_);
673+
// Delete the commit first
674674
if (vfs.is_file(commit_uris_to_delete[i])) {
675675
vfs.remove_file(commit_uris_to_delete[i]);
676676
}
677+
// Delete the fragment next
678+
vfs.remove_dir(fragment_uris[i].uri_);
677679
return Status::Ok();
678680
}));
679681
}

tiledb/sm/array/array_directory.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,12 @@ void ArrayDirectory::delete_fragments_list(
323323
throw_if_not_ok(parallel_for(
324324
&resources_.get().compute_tp(), 0, uris.size(), [&](size_t i) {
325325
auto& vfs = resources_.get().vfs();
326-
vfs.remove_dir(uris[i]);
326+
// Delete the commit first
327327
if (vfs.is_file(commit_uris_to_delete[i])) {
328328
vfs.remove_file(commit_uris_to_delete[i]);
329329
}
330+
// Delete the fragment next
331+
vfs.remove_dir(uris[i]);
330332
return Status::Ok();
331333
}));
332334
}

tiledb/sm/misc/constants.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ const std::string array_enumerations_dir_name = "__enumerations";
9696
const std::vector<std::string> array_dir_names = {
9797
array_schema_dir_name,
9898
array_metadata_dir_name,
99+
array_commits_dir_name,
99100
array_fragment_meta_dir_name,
100101
array_fragments_dir_name,
101-
array_commits_dir_name,
102102
array_dimension_labels_dir_name,
103103
array_enumerations_dir_name};
104104

0 commit comments

Comments
 (0)