Skip to content

Commit b08b39e

Browse files
committed
fix CI and parallelism
1 parent 02226c2 commit b08b39e

File tree

8 files changed

+40
-33
lines changed

8 files changed

+40
-33
lines changed

src/chunkfs_sbc.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ use std::time::Instant;
1616

1717
const NUM_THREADS_FOR_HASHING: usize = 6;
1818

19-
pub type ClusterPoint<'a, Hash: SBCHash> = (Hash, &'a mut &'a mut DataContainer<SBCKey<Hash>>);
20-
pub type Clusters<'a, Hash: SBCHash> = HashMap<Hash, Vec<ClusterPoint<'a, Hash>>>;
19+
pub type ClusterPoint<'a, Hash> = (Hash, &'a mut &'a mut DataContainer<SBCKey<Hash>>);
20+
pub type Clusters<'a, Hash> = HashMap<Hash, Vec<ClusterPoint<'a, Hash>>>;
2121

2222
impl<D: Decoder, Hash: SBCHash> Database<SBCKey<Hash>, Vec<u8>> for SBCMap<D, Hash> {
2323
fn insert(&mut self, sbc_hash: SBCKey<Hash>, chunk: Vec<u8>) -> io::Result<()> {
@@ -72,7 +72,7 @@ impl<D: Decoder, Hash: SBCHash> IterableDatabase<SBCKey<Hash>, Vec<u8>> for SBCM
7272
pub struct SBCScrubber<Hash, H, C, E>
7373
where
7474
Hash: SBCHash,
75-
H : Hasher<Hash = Hash>,
75+
H: Hasher<Hash = Hash>,
7676
C: Clusterer<Hash>,
7777
E: Encoder,
7878
{
@@ -97,11 +97,13 @@ where
9797
}
9898
}
9999

100-
impl<CDCHash, B, D, H, C, E, Hash> Scrub<CDCHash, B, SBCKey<Hash>, SBCMap<D, Hash>> for SBCScrubber<Hash, H, C, E>
100+
impl<CDCHash, B, D, H, C, E, Hash> Scrub<CDCHash, B, SBCKey<Hash>, SBCMap<D, Hash>>
101+
for SBCScrubber<Hash, H, C, E>
101102
where
102103
CDCHash: ChunkHash,
103-
for<'data> B: IterableDatabase<CDCHash, DataContainer<SBCKey<Hash>>> + IntoParallelRefMutIterator<'data>,
104-
H : Hasher<Hash = Hash> + Sync,
104+
for<'data> B:
105+
IterableDatabase<CDCHash, DataContainer<SBCKey<Hash>>> + IntoParallelRefMutIterator<'data>,
106+
H: Hasher<Hash = Hash> + Sync,
105107
C: Clusterer<Hash>,
106108
D: Decoder + Send,
107109
E: Encoder + Sync,

src/clusterer.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
mod graph;
22

33
use crate::chunkfs_sbc::{ClusterPoint, Clusters};
4-
pub use graph::Graph;
54
use crate::SBCHash;
5+
pub use graph::Graph;
66

77
pub trait Clusterer<Hash: SBCHash> {
8-
fn clusterize<'a>(&mut self, chunk_sbc_hash: Vec<ClusterPoint<'a, Hash>>) -> Clusters<'a, Hash>;
8+
fn clusterize<'a>(&mut self, chunk_sbc_hash: Vec<ClusterPoint<'a, Hash>>)
9+
-> Clusters<'a, Hash>;
910
}

src/clusterer/graph.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::chunkfs_sbc::{ClusterPoint, Clusters};
22
use crate::clusterer::Clusterer;
3-
use crate::{SBCHash};
3+
use crate::SBCHash;
44
use std::collections::HashMap;
55

66
const MAX_WEIGHT_EDGE: u32 = 1 << 5;
@@ -19,7 +19,10 @@ pub struct Graph {
1919
vertices: HashMap<u32, Vertex>,
2020
}
2121
impl<Hash: SBCHash> Clusterer<Hash> for Graph {
22-
fn clusterize<'a>(&mut self, chunk_sbc_hash: Vec<ClusterPoint<'a, Hash>>) -> Clusters<'a, Hash> {
22+
fn clusterize<'a>(
23+
&mut self,
24+
chunk_sbc_hash: Vec<ClusterPoint<'a, Hash>>,
25+
) -> Clusters<'a, Hash> {
2326
let mut clusters: Clusters<Hash> = HashMap::default();
2427
for (sbc_hash, data_container) in chunk_sbc_hash {
2528
let key = sbc_hash.get_key_for_graph_clusterer();

src/encoder.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ pub trait Encoder {
6363
let processed_data = Mutex::new(0);
6464
let target_map_ref = Arc::new(Mutex::new(target_map));
6565
pool.install(|| {
66-
let _ = clusters.par_iter_mut().for_each(|(parent_hash, cluster)| {
66+
clusters.par_iter_mut().for_each(|(parent_hash, cluster)| {
6767
let data_analyse = self.encode_cluster(
6868
target_map_ref.clone(),
6969
cluster.as_mut_slice(),
@@ -104,7 +104,10 @@ fn count_delta_chunks_with_hash<D: Decoder, Hash: SBCHash>(
104104
count as u16
105105
}
106106

107-
fn find_empty_cell<D: Decoder, Hash: SBCHash>(target_map: &MutexGuard<&mut SBCMap<D, Hash>>, hash: &Hash) -> Hash {
107+
fn find_empty_cell<D: Decoder, Hash: SBCHash>(
108+
target_map: &MutexGuard<&mut SBCMap<D, Hash>>,
109+
hash: &Hash,
110+
) -> Hash {
108111
let mut left = hash.clone();
109112
let mut right = hash.next_hash();
110113
loop {

src/encoder/levenshtein_encoder.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,8 @@ fn encode_delta_action(action: Action, index: usize, byte_value: u8) -> u32 {
236236
#[cfg(test)]
237237
mod test {
238238
use super::*;
239-
use crate::{AronovichHash, decoder};
240-
use crate::SBCHash::Aronovich;
239+
use crate::decoder;
240+
use crate::hasher::AronovichHash;
241241

242242
#[test]
243243
fn test_restore_similarity_chunk_1_byte_diff() {
@@ -365,11 +365,15 @@ mod test {
365365
fn create_map_and_key<'a>(
366366
data: &'a [u8],
367367
data2: &'a [u8],
368-
) -> (SBCMap<decoder::LevenshteinDecoder, AronovichHash>, SBCKey<AronovichHash>) {
368+
) -> (
369+
SBCMap<decoder::LevenshteinDecoder, AronovichHash>,
370+
SBCKey<AronovichHash>,
371+
) {
369372
let mut binding = SBCMap::new(decoder::LevenshteinDecoder);
370373
let sbc_map = Arc::new(Mutex::new(&mut binding));
371374

372-
let (_, sbc_key) = encode_simple_chunk(&mut sbc_map.lock().unwrap(), data, AronovichHash::new(0));
375+
let (_, sbc_key) =
376+
encode_simple_chunk(&mut sbc_map.lock().unwrap(), data, AronovichHash::new(0));
373377
let (_, _, sbc_key_2) = LevenshteinEncoder::encode_delta_chunk(
374378
sbc_map.clone(),
375379
data2,

src/hasher.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1+
pub use aronovich_hash::{AronovichHash, AronovichHasher};
12
use std::hash;
2-
pub use aronovich_hash::{AronovichHasher, AronovichHash};
33
mod aronovich_hash;
44

55
pub trait Hasher {
66
type Hash: SBCHash;
77
fn calculate_hash(&self, chunk_data: &[u8]) -> Self::Hash;
8-
98
}
109

11-
12-
pub trait SBCHash: hash::Hash + Clone + Eq + PartialEq + Default {
10+
pub trait SBCHash: hash::Hash + Clone + Eq + PartialEq + Default + Send + Sync {
1311
fn new(key: u32) -> Self;
1412
fn next_hash(&self) -> Self;
1513

1614
fn last_hash(&self) -> Self;
1715

1816
fn get_key_for_graph_clusterer(&self) -> u32;
19-
}
17+
}

src/hasher/aronovich_hash.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::hasher::Hasher;
2-
use crate::{SBCHash};
2+
use crate::SBCHash;
33
use std::collections::HashMap;
44
use std::hash::Hash;
55
use std::ops::Range;
@@ -12,11 +12,11 @@ const SHIFT_FOR_PAIR: u8 = 3;
1212
const BLOCKS_FOR_P_SPECTRUM_INDEXES: Range<usize> = 5..9;
1313
const MIN_FREQUENCY_FOR_BYTE: u32 = 50;
1414

15+
#[derive(Debug)]
1516
pub struct AronovichHash {
16-
hash: u32
17+
hash: u32,
1718
}
1819

19-
2020
impl Hash for AronovichHash {
2121
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
2222
self.hash.hash(state)
@@ -44,20 +44,18 @@ impl Default for AronovichHash {
4444
}
4545

4646
impl SBCHash for AronovichHash {
47-
4847
fn new(hash: u32) -> Self {
49-
AronovichHash {hash}
48+
AronovichHash { hash }
5049
}
5150
fn next_hash(&self) -> Self {
5251
AronovichHash {
53-
hash:
54-
self.hash.saturating_add(1)
52+
hash: self.hash.saturating_add(1),
5553
}
5654
}
5755

5856
fn last_hash(&self) -> Self {
59-
AronovichHash {hash:
60-
self.hash.saturating_sub(1)
57+
AronovichHash {
58+
hash: self.hash.saturating_sub(1),
6159
}
6260
}
6361

src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::decoder::Decoder;
22
pub use chunkfs_sbc::SBCScrubber;
3-
use std::collections::HashMap;
43
use hasher::SBCHash;
4+
use std::collections::HashMap;
55

66
mod chunkfs_sbc;
77
pub mod clusterer;
@@ -19,8 +19,6 @@ enum ChunkType<Hash: SBCHash> {
1919
Simple,
2020
}
2121

22-
23-
2422
#[derive(Hash, PartialEq, Eq, Clone, Default)]
2523
pub struct SBCKey<H: SBCHash> {
2624
hash: H,

0 commit comments

Comments
 (0)