spark_runtime/prefix_cache/
no_caching.rs

1// SPDX-License-Identifier: AGPL-3.0-only
2
3//! The no-op [`PrefixCache`] used when prefix caching is disabled.
4//!
5//! Split out of `prefix_cache.rs` to keep it under the repo's 500-LoC cap.
6
7use super::{EvictedBlocks, InsertAcquired, PrefixCache, PrefixMatch};
8
9/// No-op prefix cache (zero overhead when disabled).
10pub struct NoPrefixCaching;
11
12impl PrefixCache for NoPrefixCaching {
13    fn is_active(&self) -> bool {
14        false
15    }
16
17    fn lookup(
18        &self,
19        _tokens: &[u32],
20        _block_size: usize,
21        _session_hash: u64,
22        _adapter_id: u64,
23    ) -> PrefixMatch {
24        PrefixMatch::empty()
25    }
26
27    fn insert(
28        &self,
29        _tokens: &[u32],
30        _block_table: &[u32],
31        _disk_block_ids: &[u32],
32        _block_size: usize,
33        _matched_tokens: usize,
34        _adapter_id: u64,
35    ) -> InsertAcquired {
36        InsertAcquired::default()
37    }
38
39    fn insert_with_snapshot(
40        &self,
41        _tokens: &[u32],
42        _block_table: &[u32],
43        _disk_block_ids: &[u32],
44        _block_size: usize,
45        _snapshot_id: usize,
46        _session_hash: u64,
47        _matched_tokens: usize,
48        _adapter_id: u64,
49    ) -> (Option<usize>, InsertAcquired) {
50        (None, InsertAcquired::default())
51    }
52
53    fn insert_intermediate_snapshot(
54        &self,
55        _tokens: &[u32],
56        _block_table: &[u32],
57        _disk_block_ids: &[u32],
58        _block_size: usize,
59        _snapshot_id: usize,
60        _session_hash: u64,
61        _matched_tokens: usize,
62        _adapter_id: u64,
63    ) -> Option<usize> {
64        None
65    }
66
67    fn insert_tail_snapshot(
68        &self,
69        _tokens: &[u32],
70        _snapshot_id: usize,
71        _session_hash: u64,
72        _adapter_id: u64,
73    ) -> Vec<usize> {
74        Vec::new()
75    }
76
77    fn insert_tail_sibling_snapshot(
78        &self,
79        _tokens: &[u32],
80        _snapshot_id: usize,
81        _session_hash: u64,
82        _adapter_id: u64,
83    ) -> Option<usize> {
84        None
85    }
86
87    fn release(&self, _tokens: &[u32], _block_size: usize, _adapter_id: u64) {}
88
89    fn release_matched(
90        &self,
91        _tokens: &[u32],
92        _block_size: usize,
93        _matched_tokens: usize,
94        _adapter_id: u64,
95    ) {
96    }
97
98    fn evict(&self, _num_blocks: usize) -> EvictedBlocks {
99        EvictedBlocks::default()
100    }
101
102    fn evict_snapshot_lru(&self) -> Option<usize> {
103        None
104    }
105
106    fn snapshot_count(&self) -> usize {
107        0
108    }
109
110    fn stats(&self) -> (usize, usize) {
111        (0, 0)
112    }
113}