Skip to content

Commit 0e2ee54

Browse files
authored
Merge pull request #2520 from input-output-hk/jpraynaud/2519-fix-missing-immutable-files
fix: missing `00000` immutable files with Cardano DB v2
2 parents 8ff8117 + 9a5e305 commit 0e2ee54

File tree

7 files changed

+27
-18
lines changed

7 files changed

+27
-18
lines changed

.github/workflows/test-client.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ jobs:
239239
if: steps.aggregator_capability_unix.outputs.cardano_database_v2_enabled == 'true' || steps.aggregator_capability_windows.outputs.cardano_database_v2_enabled == 'true'
240240
shell: bash
241241
working-directory: ./bin
242-
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} --unstable --origin-tag CI cardano-db-v2 download $CARDANO_DATABASE_V2_SNAPSHOT_HASH ${{ matrix.extra_args }} 2>&1 | tee cdb-download-output.txt
242+
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} --unstable --origin-tag CI cardano-db-v2 download $CARDANO_DATABASE_V2_SNAPSHOT_HASH ${{ matrix.extra_args }} 2>&1 | tee cdb-v2-download-output.txt
243243

244244
- name: Cardano Database V2 Snapshot / verify Cardano node starts successfully
245245
if: runner.os == 'Linux' && steps.aggregator_capability_unix.outputs.cardano_database_v2_enabled == 'true'

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.7.53"
3+
version = "0.7.54"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/artifact_builder/cardano_database.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ mod tests {
166166
let ledger_file_size = 6666;
167167
let volatile_file_size = 99;
168168
let cardano_db = DummyCardanoDbBuilder::new("cdb-should_compute_valid_artifact")
169-
.with_immutables(&[1, 2, 3])
169+
.with_immutables(&[0, 1, 2, 3])
170170
.append_immutable_trio()
171171
.set_immutable_trio_file_size(immutable_trio_file_size)
172172
.with_ledger_files(&["437"])
@@ -227,7 +227,8 @@ mod tests {
227227
}
228228

229229
let immutable_artifact_builder = {
230-
let number_of_immutable_file_loaded = beacon.immutable_file_number;
230+
// We upload the immutable files in the [0,beacon.immutable_file_number] range
231+
let number_of_immutable_file_loaded = beacon.immutable_file_number + 1;
231232
let mut immutable_uploader = MockImmutableFilesUploader::new();
232233
immutable_uploader
233234
.expect_batch_upload()

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/immutable.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,9 @@ impl ImmutableArtifactBuilder {
193193
) -> StdResult<(Vec<PathBuf>, CompressionAlgorithm)> {
194194
let mut archive_paths = vec![];
195195
let compression_algorithm = self.snapshotter.compression_algorithm();
196+
const FIRST_IMMUTABLE_FILE_NUMBER: ImmutableFileNumber = 0;
196197

197-
for immutable_file_number in 1..=up_to_immutable_file_number {
198+
for immutable_file_number in FIRST_IMMUTABLE_FILE_NUMBER..=up_to_immutable_file_number {
198199
let archive_name_without_extension = format!("{immutable_file_number:05}");
199200
let archive_name = format!(
200201
"{archive_name_without_extension}.{}",
@@ -352,7 +353,7 @@ mod tests {
352353
let work_dir = get_builder_work_dir("upload_call_archive_creation_and_upload");
353354
let test_dir = "upload_call_archive_creation_and_upload/cardano_database";
354355
let cardano_db = DummyCardanoDbBuilder::new(test_dir)
355-
.with_immutables(&[1, 2])
356+
.with_immutables(&[0, 1, 2])
356357
.build();
357358

358359
let db_directory = cardano_db.get_dir().to_path_buf();
@@ -368,6 +369,7 @@ mod tests {
368369

369370
let uploader = fake_uploader(
370371
vec![
372+
work_dir.join("00000.tar.gz").to_str().unwrap(),
371373
work_dir.join("00001.tar.gz").to_str().unwrap(),
372374
work_dir.join("00002.tar.gz").to_str().unwrap(),
373375
],
@@ -444,7 +446,7 @@ mod tests {
444446
let test_dir =
445447
"snapshot_immutables_files_up_to_the_given_immutable_file_number/cardano_database";
446448
let cardano_db = DummyCardanoDbBuilder::new(test_dir)
447-
.with_immutables(&[1, 2])
449+
.with_immutables(&[0, 1, 2])
448450
.build();
449451

450452
let db_directory = cardano_db.get_dir().to_path_buf();
@@ -473,7 +475,11 @@ mod tests {
473475

474476
assert_equivalent(
475477
archive_paths,
476-
vec![work_dir.join("00001.tar.gz"), work_dir.join("00002.tar.gz")],
478+
vec![
479+
work_dir.join("00000.tar.gz"),
480+
work_dir.join("00001.tar.gz"),
481+
work_dir.join("00002.tar.gz"),
482+
],
477483
)
478484
}
479485

@@ -614,7 +620,7 @@ mod tests {
614620
let work_dir = get_builder_work_dir("return_all_archives_but_not_rebuild_archives");
615621
let test_dir = "return_all_archives_but_not_rebuild_archives/cardano_database";
616622
let cardano_db = DummyCardanoDbBuilder::new(test_dir)
617-
.with_immutables(&[1, 2, 3])
623+
.with_immutables(&[0, 1, 2, 3])
618624
.build();
619625

620626
let db_directory = cardano_db.get_dir().to_path_buf();
@@ -628,6 +634,7 @@ mod tests {
628634
)
629635
.unwrap();
630636

637+
create_fake_file(&work_dir.join("00000.tar.gz"), "00000 content");
631638
create_fake_file(&work_dir.join("00001.tar.gz"), "00001 content");
632639
create_fake_file(&work_dir.join("00002.tar.gz"), "00002 content");
633640

@@ -647,12 +654,14 @@ mod tests {
647654
assert_equivalent(
648655
archive_paths,
649656
vec![
657+
work_dir.join("00000.tar.gz"),
650658
work_dir.join("00001.tar.gz"),
651659
work_dir.join("00002.tar.gz"),
652660
work_dir.join("00003.tar.gz"),
653661
],
654662
);
655663
// Check that the existing archives content have not changed
664+
assert_file_content!(work_dir.join("00000.tar.gz"), "00000 content");
656665
assert_file_content!(work_dir.join("00001.tar.gz"), "00001 content");
657666
assert_file_content!(work_dir.join("00002.tar.gz"), "00002 content");
658667
}
@@ -666,6 +675,7 @@ mod tests {
666675
.expect_compression_algorithm()
667676
.returning(|| CompressionAlgorithm::Gzip);
668677

678+
create_fake_file(&work_dir.join("00000.tar.gz"), "00000 content");
669679
create_fake_file(&work_dir.join("00001.tar.gz"), "00001 content");
670680
create_fake_file(&work_dir.join("00002.tar.gz"), "00002 content");
671681
create_fake_file(&work_dir.join("00003.tar.gz"), "00003 content");
@@ -686,6 +696,7 @@ mod tests {
686696
assert_equivalent(
687697
archive_paths,
688698
vec![
699+
work_dir.join("00000.tar.gz"),
689700
work_dir.join("00001.tar.gz"),
690701
work_dir.join("00002.tar.gz"),
691702
work_dir.join("00003.tar.gz"),

mithril-client/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-client"
3-
version = "0.12.7"
3+
version = "0.12.8"
44
description = "Mithril client library"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-client/src/cardano_database_client/immutable_file_range.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ impl ImmutableFileRange {
2626
&self,
2727
last_immutable_file_number: ImmutableFileNumber,
2828
) -> StdResult<RangeInclusive<ImmutableFileNumber>> {
29-
// The immutable file numbers start from 1 on all the networks except the 'devnet'
30-
// when it is configured with aggressive protocol parameters for fast epochs (used in the e2e tests).
31-
// We have taken the choice to consider that the file numbers start from 1 for all the networks.
32-
const FIRST_IMMUTABLE_FILE_NUMBER: ImmutableFileNumber = 1;
29+
const FIRST_IMMUTABLE_FILE_NUMBER: ImmutableFileNumber = 0;
3330
let full_range = FIRST_IMMUTABLE_FILE_NUMBER..=last_immutable_file_number;
3431

3532
match self {
@@ -74,7 +71,7 @@ mod tests {
7471
let result = immutable_file_range
7572
.to_range_inclusive(last_immutable_file_number)
7673
.unwrap();
77-
assert_eq!(1..=10, result);
74+
assert_eq!(0..=10, result);
7875
}
7976

8077
#[test]
@@ -124,7 +121,7 @@ mod tests {
124121
let result = immutable_file_range
125122
.to_range_inclusive(last_immutable_file_number)
126123
.unwrap();
127-
assert_eq!(1..=8, result);
124+
assert_eq!(0..=8, result);
128125

129126
let last_immutable_file_number = 7;
130127
immutable_file_range

0 commit comments

Comments
 (0)