MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / compression

Function compression

crates/commitlog/tests/random_payload/mod.rs:88–123  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

86
87#[test]
88fn compression() {
89 enable_logging();
90
91 let root = tempdir().unwrap();
92 let clog = Commitlog::open(
93 CommitLogDir::from_path_unchecked(root.path()),
94 Options {
95 max_segment_size: 8 * 1024,
96 ..Options::default()
97 },
98 None,
99 )
100 .unwrap();
101
102 let payloads = compressible_payloads().take(1024).collect::<Vec<_>>();
103 for (i, payload) in payloads.iter().enumerate() {
104 clog.commit([(i as u64, *payload)]).unwrap();
105 }
106 clog.flush_and_sync().unwrap();
107
108 let uncompressed_size = clog.size_on_disk().unwrap();
109
110 let segments = clog.existing_segment_offsets().unwrap();
111 let segments_to_compress = &segments[..segments.len() / 2];
112 info!("segments: {segments:?} compressing: {segments_to_compress:?}");
113 clog.compress_segments(segments_to_compress).unwrap();
114
115 let compressed_size = clog.size_on_disk().unwrap();
116 assert!(compressed_size.total_bytes < uncompressed_size.total_bytes);
117
118 assert!(clog
119 .transactions(&payload::ArrayDecoder)
120 .map(Result::unwrap)
121 .enumerate()
122 .all(|(i, x)| x.offset == i as u64 && x.txdata == payloads[i]));
123}
124
125/// When restoring an archived commitlog, all segments are compressed and should
126/// remain immutable.

Callers

nothing calls this directly

Calls 13

compressible_payloadsFunction · 0.85
iterMethod · 0.65
commitMethod · 0.65
enable_loggingFunction · 0.50
openFunction · 0.50
unwrapMethod · 0.45
pathMethod · 0.45
takeMethod · 0.45
flush_and_syncMethod · 0.45
size_on_diskMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…