v2 #2
@ -1,67 +0,0 @@
|
||||
package mdb
|
||||
|
||||
/*
|
||||
func (db *Database) openPrimary() (err error) {
|
||||
wal, err := cwal.Open(db.walRootDir, cwal.Config{
|
||||
SegMinCount: db.conf.WALSegMinCount,
|
||||
SegMaxAgeSec: db.conf.WALSegMaxAgeSec,
|
||||
})
|
||||
|
||||
pFile, err := pfile.Open(db.pageFilePath,
|
||||
|
||||
pFile, err := openPageFileAndReplayWAL(db.rootDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer pFile.Close()
|
||||
|
||||
pfHeader, err := pFile.ReadHeader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tx := db.Snapshot()
|
||||
tx.seqNum = pfHeader.SeqNum
|
||||
tx.updatedAt = pfHeader.UpdatedAt
|
||||
|
||||
pIndex, err := pagefile.NewIndex(pFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = pFile.IterateAllocated(pIndex, func(cID, iID uint64, data []byte) error {
|
||||
return db.loadItem(tx, cID, iID, data)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
w, err := cwal.OpenWriter(db.walRootDir, &cwal.WriterConfig{
|
||||
SegMinCount: db.conf.WALSegMinCount,
|
||||
SegMaxAgeSec: db.conf.WALSegMaxAgeSec,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
db.done.Add(1)
|
||||
go txAggregator{
|
||||
Stop: db.stop,
|
||||
Done: db.done,
|
||||
ModChan: db.modChan,
|
||||
W: w,
|
||||
Index: pIndex,
|
||||
Snapshot: db.snapshot,
|
||||
}.Run()
|
||||
|
||||
db.done.Add(1)
|
||||
go (&fileWriter{
|
||||
Stop: db.stop,
|
||||
Done: db.done,
|
||||
PageFilePath: db.pageFilePath,
|
||||
WALRootDir: db.walRootDir,
|
||||
}).Run()
|
||||
|
||||
return nil
|
||||
}
|
||||
*/
|
@ -1,129 +0,0 @@
|
||||
package mdb
|
||||
|
||||
/*
|
||||
func (db *Database) openSecondary() (err error) {
|
||||
if db.shouldLoadFromPrimary() {
|
||||
if err := db.loadFromPrimary(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("Opening page-file...")
|
||||
|
||||
pFile, err := openPageFileAndReplayWAL(db.rootDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer pFile.Close()
|
||||
|
||||
pfHeader, err := pFile.ReadHeader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("Building page-file index...")
|
||||
|
||||
pIndex, err := pagefile.NewIndex(pFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tx := db.Snapshot()
|
||||
tx.seqNum = pfHeader.SeqNum
|
||||
tx.updatedAt = pfHeader.UpdatedAt
|
||||
|
||||
log.Printf("Loading data into memory...")
|
||||
|
||||
err = pFile.IterateAllocated(pIndex, func(cID, iID uint64, data []byte) error {
|
||||
return db.loadItem(tx, cID, iID, data)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("Creating writer...")
|
||||
|
||||
w, err := cswal.OpenWriter(db.walRootDir, &cswal.WriterConfig{
|
||||
SegMinCount: db.conf.WALSegMinCount,
|
||||
SegMaxAgeSec: db.conf.WALSegMaxAgeSec,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
db.done.Add(1)
|
||||
go (&walFollower{
|
||||
Stop: db.stop,
|
||||
Done: db.done,
|
||||
W: w,
|
||||
Client: NewClient(db.conf.PrimaryURL, db.conf.ReplicationPSK, db.conf.NetTimeout),
|
||||
}).Run()
|
||||
|
||||
db.done.Add(1)
|
||||
go (&follower{
|
||||
Stop: db.stop,
|
||||
Done: db.done,
|
||||
WALRootDir: db.walRootDir,
|
||||
SeqNum: pfHeader.SeqNum,
|
||||
ApplyChanges: db.applyChanges,
|
||||
}).Run()
|
||||
|
||||
db.done.Add(1)
|
||||
go (&fileWriter{
|
||||
Stop: db.stop,
|
||||
Done: db.done,
|
||||
PageFilePath: db.pageFilePath,
|
||||
WALRootDir: db.walRootDir,
|
||||
}).Run()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *Database) shouldLoadFromPrimary() bool {
|
||||
if _, err := os.Stat(db.walRootDir); os.IsNotExist(err) {
|
||||
log.Printf("WAL doesn't exist.")
|
||||
return true
|
||||
}
|
||||
if _, err := os.Stat(db.pageFilePath); os.IsNotExist(err) {
|
||||
log.Printf("Page-file doesn't exist.")
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (db *Database) loadFromPrimary() error {
|
||||
client := NewClient(db.conf.PrimaryURL, db.conf.ReplicationPSK, db.conf.NetTimeout)
|
||||
defer client.Disconnect()
|
||||
|
||||
log.Printf("Loading data from primary...")
|
||||
|
||||
if err := os.RemoveAll(db.pageFilePath); err != nil {
|
||||
log.Printf("Failed to remove page-file: %s", err)
|
||||
return errs.IO.WithErr(err) // Caller can retry.
|
||||
}
|
||||
|
||||
if err := os.RemoveAll(db.walRootDir); err != nil {
|
||||
log.Printf("Failed to remove WAL: %s", err)
|
||||
return errs.IO.WithErr(err) // Caller can retry.
|
||||
}
|
||||
|
||||
err := client.DownloadPageFile(db.pageFilePath+".tmp", db.pageFilePath)
|
||||
if err != nil {
|
||||
log.Printf("Failed to get page-file from primary: %s", err)
|
||||
return err // Caller can retry.
|
||||
}
|
||||
|
||||
pfHeader, err := pagefile.ReadHeader(db.pageFilePath)
|
||||
if err != nil {
|
||||
log.Printf("Failed to read page-file sequence number: %s", err)
|
||||
return err // Caller can retry.
|
||||
}
|
||||
|
||||
if err = cswal.CreateEx(db.walRootDir, pfHeader.SeqNum+1); err != nil {
|
||||
log.Printf("Failed to initialize WAL: %s", err)
|
||||
return err // Caller can retry.
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
*/
|
Loading…
Reference in New Issue
Block a user