Skip to content

Commit

Permalink
fix: clean up public API for clearing files
Browse files Browse the repository at this point in the history
`clear_layer_data()` and `clear_caches` are never called within `rust-fil-proofs`
and also not used in `rust-filecoin-proofs-api`, hence remove them.

The `clear_cache()` and `clear_synthetic_proofs()` functions don't need to be
generic over the tree as it's never used within those functions. This is a
breaking change.

BREAKING CHANGE: signature of `clear_cache()` and `clear_synthetic_proofs()`
changed. The generic parameter is no longer needed.
  • Loading branch information
vmx committed Jan 13, 2025
1 parent aa99ce4 commit a51b842
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 43 deletions.
2 changes: 1 addition & 1 deletion fil-proofs-tooling/src/bin/benchy/porep.rs
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ pub fn run_porep_bench<Tree: 'static + MerkleTreeTrait>(
let phase1_output = seal_commit_phase1_measurement.return_value;

if porep_config.feature_enabled(ApiFeature::SyntheticPoRep) {
clear_synthetic_proofs::<Tree>(&cache_dir)?;
clear_synthetic_proofs(&cache_dir)?;
}

// Persist commit phase1_output here
Expand Down
2 changes: 1 addition & 1 deletion fil-proofs-tooling/src/shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ pub fn create_replicas<Tree: 'static + MerkleTreeTrait>(
piece_infos[i].as_slice(),
)
.expect("failed to generate synthetic proofs");
clear_cache::<Tree>(cache_dirs[i].path())
clear_cache(cache_dirs[i].path())
.expect("failed to clear synthetic porep layer data");
} else {
info!("SyntheticPoRep is NOT enabled");
Expand Down
45 changes: 4 additions & 41 deletions filecoin-proofs/src/api/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use std::collections::BTreeMap;
use std::fs::{File, OpenOptions};
use std::io::{self, BufReader, BufWriter, Read, Write};
use std::path::{Path, PathBuf};
Expand Down Expand Up @@ -28,8 +27,8 @@ use crate::{
parameters::public_params,
pieces::{get_piece_alignment, sum_piece_bytes_with_alignment},
types::{
Commitment, MerkleTreeTrait, PaddedBytesAmount, PieceInfo, PoRepConfig, PrivateReplicaInfo,
ProverId, SealPreCommitPhase1Output, Ticket, UnpaddedByteIndex, UnpaddedBytesAmount,
Commitment, MerkleTreeTrait, PaddedBytesAmount, PieceInfo, PoRepConfig, ProverId,
SealPreCommitPhase1Output, Ticket, UnpaddedByteIndex, UnpaddedBytesAmount,
},
};

Expand All @@ -51,10 +50,7 @@ pub use winning_post::*;

pub use storage_proofs_update::constants::{partition_count, TreeRHasher};

// TODO vmx 2023-09-26: The `Tree` generic is not needed, it's only there in order to not breaking
// the public API. Once we break the API, remove that generic.
// Ensure that any associated cached data persisted is discarded.
pub fn clear_cache<Tree>(cache_dir: &Path) -> Result<()> {
pub fn clear_cache(cache_dir: &Path) -> Result<()> {
info!("clear_cache:start");

let result = stacked::clear_cache_dir(cache_dir);
Expand All @@ -64,40 +60,7 @@ pub fn clear_cache<Tree>(cache_dir: &Path) -> Result<()> {
result
}

// TODO vmx 2023-09-26: The `Tree` generic is not needed, it's only there in order to not breaking
// the public API. Once we break the API, remove that generic.
// Ensure that any associated cached data persisted is discarded.
pub fn clear_caches<Tree: MerkleTreeTrait>(
replicas: &BTreeMap<SectorId, PrivateReplicaInfo<Tree>>,
) -> Result<()> {
info!("clear_caches:start");

for replica in replicas.values() {
clear_cache::<Tree>(replica.cache_dir.as_path())?;
}

info!("clear_caches:finish");

Ok(())
}

// TODO vmx 2023-09-26: The `Tree` generic is not needed, it's only there in order to not breaking
// the public API. Once we break the API, remove that generic.
// Ensure that any persisted layer data generated from porep are discarded.
pub fn clear_layer_data<Tree>(cache_dir: &Path) -> Result<()> {
info!("clear_layer_data:start");

let result = stacked::clear_cache_dir(cache_dir);

info!("clear_layer_data:finish");

result
}

// TODO vmx 2023-09-26: The `Tree` generic is not needed, it's only there in order to not breaking
// the public API. Once we break the API, remove that generic.
// Ensure that any persisted vanilla proofs generated from synthetic porep are discarded.
pub fn clear_synthetic_proofs<Tree>(cache_dir: &Path) -> Result<()> {
pub fn clear_synthetic_proofs(cache_dir: &Path) -> Result<()> {
info!("clear_synthetic_proofs:start");

let result = stacked::clear_synthetic_proofs(cache_dir);
Expand Down

0 comments on commit a51b842

Please sign in to comment.