Load the merge data directory
()
| 170 | |
| 171 | // Load the merge data directory |
| 172 | func (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 |
no test coverage detected