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.do_prune_intm_sst_dir().await;
25        self.puffin_manager = None;
26    }
27
28    async fn do_abort_inverted_index(&mut self) {
29        let Some(mut indexer) = self.inverted_indexer.take() else {
30            return;
31        };
32        let Err(err) = indexer.abort().await else {
33            return;
34        };
35
36        if cfg!(any(test, feature = "test")) {
37            panic!(
38                "Failed to abort inverted index, region_id: {}, file_id: {}, err: {:?}",
39                self.region_id, self.file_id, err
40            );
41        } else {
42            warn!(
43                err; "Failed to abort inverted index, region_id: {}, file_id: {}",
44                self.region_id, self.file_id,
45            );
46        }
47    }
48
49    async fn do_abort_fulltext_index(&mut self) {
50        let Some(mut indexer) = self.fulltext_indexer.take() else {
51            return;
52        };
53        let Err(err) = indexer.abort().await else {
54            return;
55        };
56
57        if cfg!(any(test, feature = "test")) {
58            panic!(
59                "Failed to abort full-text index, region_id: {}, file_id: {}, err: {:?}",
60                self.region_id, self.file_id, err
61            );
62        } else {
63            warn!(
64                err; "Failed to abort full-text index, region_id: {}, file_id: {}",
65                self.region_id, self.file_id,
66            );
67        }
68    }
69
70    async fn do_abort_bloom_filter(&mut self) {
71        let Some(mut indexer) = self.bloom_filter_indexer.take() else {
72            return;
73        };
74        let Err(err) = indexer.abort().await else {
75            return;
76        };
77
78        if cfg!(any(test, feature = "test")) {
79            panic!(
80                "Failed to abort bloom filter, region_id: {}, file_id: {}, err: {:?}",
81                self.region_id, self.file_id, err
82            );
83        } else {
84            warn!(
85                err; "Failed to abort bloom filter, region_id: {}, file_id: {}",
86                self.region_id, self.file_id,
87            );
88        }
89    }
90}