MCPcopy Create free account
hub / github.com/Rustixir/darkbird / internal_start

Method internal_start

src/darkbird/wal/page_processor.rs:106–289  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

104
105
106 fn internal_start(&self) -> Result<(), Recovery> {
107
108 let total_page_size = if self.source_total_page_size < DEFAULT_PAGE_SIZE { DEFAULT_PAGE_SIZE } else { self.source_total_page_size };
109 let source_path = format!("{}/{}", self.root, self.source_name);
110 let sync_path = format!("{}/{}", self.root, self.sync_name());
111
112 // not exist source_path
113 if !Path::new(&source_path).is_dir() {
114 return Err(Recovery::UnRecoverable("folder not exist".to_owned()))
115 }
116
117
118 if !Path::new(&sync_path).is_dir() {
119 if let Err(e) = fs::create_dir(&sync_path) {
120 return Err(Recovery::UnRecoverable(e.to_string()))
121 }
122 }
123
124 // page_index
125 let mut page_index = 1;
126
127 loop {
128
129 let page_pointer = total_page_size * page_index;
130 let source_name = filename_factory(&source_path, page_pointer);
131
132 page_index += 1;
133
134
135 // filename not exist return Ok
136 if !Path::new(&source_name).is_file() {
137 return Ok(())
138 }
139
140
141 // prepare source_page_name
142 let source_page_name = match self.sync_name {
143 Sync::Overwrite => {
144 let rename = filename_factory_rename(&source_path, page_pointer);
145 fs::rename(&source_name, &rename).unwrap();
146 rename
147 }
148 Sync::New(_) => {
149 source_name.to_owned()
150 }
151 };
152
153
154 // open source_page
155 let mut source_page = match LogFile::open(&source_page_name) {
156 Ok(log) => log,
157 Err(e) => {
158 let meta = Metadata {
159 original_filename: source_page_name.to_owned(),
160 currepted_filename: source_name,
161 err: e.to_string(),
162 };
163 return Err(Recovery::Recoverable(meta))

Callers 1

startMethod · 0.80

Calls 6

filename_factory_renameFunction · 0.85
stashMethod · 0.80
filename_factoryFunction · 0.70
to_stringMethod · 0.45
iterMethod · 0.45
get_pageMethod · 0.45

Tested by

no test coverage detected