initJournal creates journal writer, 1. must write version set's data into journal, 2. set current manifest file name into current file. 3. set version set's manifest writer
()
| 302 | // 2. set current manifest file name into current file. |
| 303 | // 3. set version set's manifest writer |
| 304 | func (vs *storeVersionSet) initJournal() error { |
| 305 | if vs.manifest == nil { |
| 306 | manifestFileName := ManifestFileName(table.FileNumber(vs.manifestFileNumber.Load())) // manifest file name |
| 307 | manifestPath := vs.getManifestFilePath(manifestFileName) |
| 308 | writer, err := newBufferWriterFunc(manifestPath) |
| 309 | if err != nil { |
| 310 | return err |
| 311 | } |
| 312 | // need snapshot writes snapshot first |
| 313 | editLogs := vs.createSnapshot() |
| 314 | if err := vs.persistEditLogs(writer, editLogs); err != nil { |
| 315 | return err |
| 316 | } |
| 317 | // make sure write snapshot success, important!!!!!!! |
| 318 | // then set manifest file name into current file |
| 319 | if err := vs.setCurrent(manifestFileName); err != nil { |
| 320 | return err |
| 321 | } |
| 322 | // finally set version set's manifest writer |
| 323 | vs.manifest = writer |
| 324 | } |
| 325 | return nil |
| 326 | } |
| 327 | |
| 328 | // getFamilyVersion returns family version |
| 329 | func (vs *storeVersionSet) getFamilyVersion(familyID FamilyID) FamilyVersion { |
no test coverage detected