MCPcopy
hub / github.com/lindb/lindb / initJournal

Method initJournal

kv/version/version_set.go:304–326  ·  view source on GitHub ↗

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

()

Source from the content-addressed store, hash-verified

302// 2. set current manifest file name into current file.
303// 3. set version set's manifest writer
304func (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
329func (vs *storeVersionSet) getFamilyVersion(familyID FamilyID) FamilyVersion {

Callers 1

RecoverMethod · 0.95

Calls 7

getManifestFilePathMethod · 0.95
createSnapshotMethod · 0.95
persistEditLogsMethod · 0.95
setCurrentMethod · 0.95
FileNumberTypeAlias · 0.92
ManifestFileNameFunction · 0.85
LoadMethod · 0.65

Tested by

no test coverage detected