mito2/sst/index/indexer/
abort.rs

1// Copyright 2023 Greptime Team
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use common_telemetry::warn;
16
17use crate::sst::index::Indexer;
18
19impl Indexer {
20    pub(crate) async fn do_abort(&mut self) {
21        self.do_abort_inverted_index().await;
22        self.do_abort_fulltext_index().await;
23        self.do_abort_bloom_filter().await;
24        self.puffin_manager = None;
25    }
26
27    async fn do_abort_inverted_index(&mut self) {
28        let Some(mut indexer) = self.inverted_indexer.take() else {
29            return;
30        };
31        let Err(err) = indexer.abort().await else {
32            return;
33        };
34
35        if cfg!(any(test, feature = "test")) {
36            panic!(
37                "Failed to abort inverted index, region_id: {}, file_id: {}, err: {:?}",
38                self.region_id, self.file_id, err
39            );
40        } else {
41            warn!(
42                err; "Failed to abort inverted index, region_id: {}, file_id: {}",
43                self.region_id, self.file_id,
44            );
45        }
46    }
47
48    async fn do_abort_fulltext_index(&mut self) {
49        let Some(mut indexer) = self.fulltext_indexer.take() else {
50            return;
51        };
52        let Err(err) = indexer.abort().await else {
53            return;
54        };
55
56        if cfg!(any(test, feature = "test")) {
57            panic!(
58                "Failed to abort full-text index, region_id: {}, file_id: {}, err: {:?}",
59                self.region_id, self.file_id, err
60            );
61        } else {
62            warn!(
63                err; "Failed to abort full-text index, region_id: {}, file_id: {}",
64                self.region_id, self.file_id,
65            );
66        }
67    }
68
69    async fn do_abort_bloom_filter(&mut self) {
70        let Some(mut indexer) = self.bloom_filter_indexer.take() else {
71            return;
72        };
73        let Err(err) = indexer.abort().await else {
74            return;
75        };
76
77        if cfg!(any(test, feature = "test")) {
78            panic!(
79                "Failed to abort bloom filter, region_id: {}, file_id: {}, err: {:?}",
80                self.region_id, self.file_id, err
81            );
82        } else {
83            warn!(
84                err; "Failed to abort bloom filter, region_id: {}, file_id: {}",
85                self.region_id, self.file_id,
86            );
87        }
88    }
89}