MCPcopy Index your code
hub / github.com/ByteStorage/FlyDB / loadMergeFiles

Method loadMergeFiles

engine/merge.go:172–243  ·  view source on GitHub ↗

Load the merge data directory

()

Source from the content-addressed store, hash-verified

170
171// Load the merge data directory
172func (db *DB) loadMergeFiles() error {
173 mergePath := db.getMergePath()
174 // Return the merge directory if it does not exist
175 if _, err := os.Stat(mergePath); os.IsNotExist(err) {
176 return nil
177 }
178 defer func() {
179 _ = os.RemoveAll(mergePath)
180 }()
181
182 dirs, err := os.ReadDir(mergePath)
183
184 // Check if there was an error while reading the directory
185 if err != nil {
186 return err
187 }
188
189 // Find the file that identifies the merge and determine whether the merge is complete
190 var mergeFinished bool
191 var mergeFileNames []string
192
193 // Iterate over the directories
194 for _, dir := range dirs {
195 // Check if the directory name matches the merge finish file suffix
196 if dir.Name() == data2.MergeFinaFileSuffix {
197 mergeFinished = true
198 }
199
200 // Append the directory name to the mergeFileNames slice
201 mergeFileNames = append(mergeFileNames, dir.Name())
202 }
203
204 // If not, return directly
205 if !mergeFinished {
206 return nil
207 }
208
209 nonMergeFileID, err := db.getRecentlyNonMergeFileId(mergePath)
210
211 // Check if there was an error while retrieving the recently non-merge file ID
212 if err != nil {
213 return err
214 }
215
216 // Delete old data files
217 var fileID uint32 = 0
218 for ; fileID < nonMergeFileID; fileID++ {
219 fileName := data2.GetDataFileName(db.options.DirPath, fileID)
220
221 // Check if the file exists
222 if _, err := os.Stat(fileName); err == nil {
223 // Remove the file
224 if err := os.Remove(fileName); err != nil {
225 return err
226 }
227 }
228 }
229

Callers 1

NewDBFunction · 0.95

Calls 2

getMergePathMethod · 0.95

Tested by

no test coverage detected