Skip to content

Commit

Permalink
Hot version building
Browse files Browse the repository at this point in the history
  • Loading branch information
linxGnu committed Oct 15, 2020
1 parent 1dcbf1c commit c1048c1
Show file tree
Hide file tree
Showing 56 changed files with 1,316 additions and 3,626 deletions.
28 changes: 14 additions & 14 deletions backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,20 +113,20 @@ func (b *BackupEngine) RestoreDBFromLatestBackup(dbDir, walDir string, ro *Resto
return
}

// RestoreDBFromBackup restores the backup (identified by its id) to dbDir. walDir
// is where the write ahead logs are restored to and usually the same as dbDir.
func (b *BackupEngine) RestoreDBFromBackup(dbDir, walDir string, ro *RestoreOptions, backupID uint32) (err error) {
cDbDir := C.CString(dbDir)
cWalDir := C.CString(walDir)

var cErr *C.char
C.rocksdb_backup_engine_restore_db_from_backup(b.c, cDbDir, cWalDir, ro.c, C.uint32_t(backupID), &cErr)
err = fromCError(cErr)

C.free(unsafe.Pointer(cDbDir))
C.free(unsafe.Pointer(cWalDir))
return
}
// // RestoreDBFromBackup restores the backup (identified by its id) to dbDir. walDir
// // is where the write ahead logs are restored to and usually the same as dbDir.
// func (b *BackupEngine) RestoreDBFromBackup(dbDir, walDir string, ro *RestoreOptions, backupID uint32) (err error) {
// cDbDir := C.CString(dbDir)
// cWalDir := C.CString(walDir)

// var cErr *C.char
// C.rocksdb_backup_engine_restore_db_from_backup(b.c, cDbDir, cWalDir, ro.c, C.uint32_t(backupID), &cErr)
// err = fromCError(cErr)

// C.free(unsafe.Pointer(cDbDir))
// C.free(unsafe.Pointer(cWalDir))
// return
// }

// Close close the backup engine and cleans up state
// The backups already taken remain on storage.
Expand Down
226 changes: 113 additions & 113 deletions backup_test.go
Original file line number Diff line number Diff line change
@@ -1,115 +1,115 @@
package grocksdb

import (
"io/ioutil"
"testing"

"github.com/facebookgo/ensure"
"github.com/stretchr/testify/require"
)

func TestBackupEngine(t *testing.T) {
db := newTestDB(t, "TestDBBackup", nil)
defer db.Close()

var (
givenKey = []byte("hello")
givenVal1 = []byte("")
givenVal2 = []byte("world1")
wo = NewDefaultWriteOptions()
ro = NewDefaultReadOptions()
)
defer wo.Destroy()
defer ro.Destroy()

// create
ensure.Nil(t, db.Put(wo, givenKey, givenVal1))

// retrieve
v1, err := db.Get(ro, givenKey)
defer v1.Free()
ensure.Nil(t, err)
ensure.DeepEqual(t, v1.Data(), givenVal1)

// retrieve bytes
_v1, err := db.GetBytes(ro, givenKey)
ensure.Nil(t, err)
ensure.DeepEqual(t, _v1, givenVal1)

// update
ensure.Nil(t, db.Put(wo, givenKey, givenVal2))
v2, err := db.Get(ro, givenKey)
defer v2.Free()
ensure.Nil(t, err)
ensure.DeepEqual(t, v2.Data(), givenVal2)

// retrieve pinned
v3, err := db.GetPinned(ro, givenKey)
defer v3.Destroy()
ensure.Nil(t, err)
ensure.DeepEqual(t, v3.Data(), givenVal2)

engine, err := CreateBackupEngine(db)
require.Nil(t, err)
defer engine.Close()

t.Run("createBackupAndVerify", func(t *testing.T) {
infos := engine.GetInfo()
require.Empty(t, infos)

// create first backup
require.Nil(t, engine.CreateNewBackup())

// create second backup
require.Nil(t, engine.CreateNewBackupFlush(true))

infos = engine.GetInfo()
require.Equal(t, 2, len(infos))
for i := range infos {
require.Nil(t, engine.VerifyBackup(infos[i].ID))
require.True(t, infos[i].Size > 0)
require.True(t, infos[i].NumFiles > 0)
}
})

t.Run("purge", func(t *testing.T) {
require.Nil(t, engine.PurgeOldBackups(1))

infos := engine.GetInfo()
require.Equal(t, 1, len(infos))
})

t.Run("restoreFromLatest", func(t *testing.T) {
dir, err := ioutil.TempDir("", "gorocksdb-restoreFromLatest")
require.Nil(t, err)

ro := NewRestoreOptions()
defer ro.Destroy()
require.Nil(t, engine.RestoreDBFromLatestBackup(dir, dir, ro))
require.Nil(t, engine.RestoreDBFromLatestBackup(dir, dir, ro))
})

t.Run("restoreFromBackup", func(t *testing.T) {
infos := engine.GetInfo()
require.Equal(t, 1, len(infos))

dir, err := ioutil.TempDir("", "gorocksdb-restoreFromBackup")
require.Nil(t, err)

ro := NewRestoreOptions()
defer ro.Destroy()
require.Nil(t, engine.RestoreDBFromBackup(dir, dir, ro, infos[0].ID))

// try to reopen restored db
backupDB, err := OpenDb(db.opts, dir)
require.Nil(t, err)

r := NewDefaultReadOptions()
defer r.Destroy()

v3, err := backupDB.GetPinned(r, givenKey)
defer v3.Destroy()
ensure.Nil(t, err)
ensure.DeepEqual(t, v3.Data(), givenVal2)
})
}
// import (
// "io/ioutil"
// "testing"

// "github.com/facebookgo/ensure"
// "github.com/stretchr/testify/require"
// )

// func TestBackupEngine(t *testing.T) {
// db := newTestDB(t, "TestDBBackup", nil)
// defer db.Close()

// var (
// givenKey = []byte("hello")
// givenVal1 = []byte("")
// givenVal2 = []byte("world1")
// wo = NewDefaultWriteOptions()
// ro = NewDefaultReadOptions()
// )
// defer wo.Destroy()
// defer ro.Destroy()

// // create
// ensure.Nil(t, db.Put(wo, givenKey, givenVal1))

// // retrieve
// v1, err := db.Get(ro, givenKey)
// defer v1.Free()
// ensure.Nil(t, err)
// ensure.DeepEqual(t, v1.Data(), givenVal1)

// // retrieve bytes
// _v1, err := db.GetBytes(ro, givenKey)
// ensure.Nil(t, err)
// ensure.DeepEqual(t, _v1, givenVal1)

// // update
// ensure.Nil(t, db.Put(wo, givenKey, givenVal2))
// v2, err := db.Get(ro, givenKey)
// defer v2.Free()
// ensure.Nil(t, err)
// ensure.DeepEqual(t, v2.Data(), givenVal2)

// // retrieve pinned
// v3, err := db.GetPinned(ro, givenKey)
// defer v3.Destroy()
// ensure.Nil(t, err)
// ensure.DeepEqual(t, v3.Data(), givenVal2)

// engine, err := CreateBackupEngine(db)
// require.Nil(t, err)
// defer engine.Close()

// t.Run("createBackupAndVerify", func(t *testing.T) {
// infos := engine.GetInfo()
// require.Empty(t, infos)

// // create first backup
// require.Nil(t, engine.CreateNewBackup())

// // create second backup
// require.Nil(t, engine.CreateNewBackupFlush(true))

// infos = engine.GetInfo()
// require.Equal(t, 2, len(infos))
// for i := range infos {
// require.Nil(t, engine.VerifyBackup(infos[i].ID))
// require.True(t, infos[i].Size > 0)
// require.True(t, infos[i].NumFiles > 0)
// }
// })

// t.Run("purge", func(t *testing.T) {
// require.Nil(t, engine.PurgeOldBackups(1))

// infos := engine.GetInfo()
// require.Equal(t, 1, len(infos))
// })

// t.Run("restoreFromLatest", func(t *testing.T) {
// dir, err := ioutil.TempDir("", "gorocksdb-restoreFromLatest")
// require.Nil(t, err)

// ro := NewRestoreOptions()
// defer ro.Destroy()
// require.Nil(t, engine.RestoreDBFromLatestBackup(dir, dir, ro))
// require.Nil(t, engine.RestoreDBFromLatestBackup(dir, dir, ro))
// })

// t.Run("restoreFromBackup", func(t *testing.T) {
// infos := engine.GetInfo()
// require.Equal(t, 1, len(infos))

// dir, err := ioutil.TempDir("", "gorocksdb-restoreFromBackup")
// require.Nil(t, err)

// ro := NewRestoreOptions()
// defer ro.Destroy()
// require.Nil(t, engine.RestoreDBFromBackup(dir, dir, ro, infos[0].ID))

// // try to reopen restored db
// backupDB, err := OpenDb(db.opts, dir)
// require.Nil(t, err)

// r := NewDefaultReadOptions()
// defer r.Destroy()

// v3, err := backupDB.GetPinned(r, givenKey)
// defer v3.Destroy()
// ensure.Nil(t, err)
// ensure.DeepEqual(t, v3.Data(), givenVal2)
// })
// }
8 changes: 4 additions & 4 deletions cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ func (c *Cache) SetCapacity(value uint64) {
C.rocksdb_cache_set_capacity(c.c, C.size_t(value))
}

// GetCapacity returns capacity of the cache.
func (c *Cache) GetCapacity() uint64 {
return uint64(C.rocksdb_cache_get_capacity(c.c))
}
// // GetCapacity returns capacity of the cache.
// func (c *Cache) GetCapacity() uint64 {
// return uint64(C.rocksdb_cache_get_capacity(c.c))
// }

// Destroy deallocates the Cache object.
func (c *Cache) Destroy() {
Expand Down
22 changes: 11 additions & 11 deletions cache_test.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package grocksdb

import (
"testing"
// import (
// "testing"

"github.com/stretchr/testify/require"
)
// "github.com/stretchr/testify/require"
// )

func TestCache(t *testing.T) {
cache := NewLRUCache(19)
defer cache.Destroy()
// func TestCache(t *testing.T) {
// cache := NewLRUCache(19)
// defer cache.Destroy()

require.EqualValues(t, 19, cache.GetCapacity())
cache.SetCapacity(128)
require.EqualValues(t, 128, cache.GetCapacity())
}
// require.EqualValues(t, 19, cache.GetCapacity())
// cache.SetCapacity(128)
// require.EqualValues(t, 128, cache.GetCapacity())
// }
7 changes: 0 additions & 7 deletions cf_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,6 @@ func TestColumnFamilyBatchPutGet(t *testing.T) {
ensure.Nil(t, err)
ensure.DeepEqual(t, actualVal0.Data(), givenVal0)

{
actualVal0 := db.KeyMayExistsCF(ro, cfh[0], givenKey0, "")
defer actualVal0.Free()
ensure.Nil(t, err)
ensure.DeepEqual(t, actualVal0.Data(), givenVal0)
}

b1 := NewWriteBatch()
defer b1.Destroy()
b1.PutCF(cfh[1], givenKey1, givenVal1)
Expand Down
4 changes: 0 additions & 4 deletions checkpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,5 @@ func TestCheckpoint(t *testing.T) {
ensure.Nil(t, err)
ensure.DeepEqual(t, value.Data(), givenVal)
value.Free()

value = dbCheck.KeyMayExists(ro, k, "")
ensure.DeepEqual(t, value.Data(), givenVal)
value.Free()
}
}
Loading

0 comments on commit c1048c1

Please sign in to comment.