forked from TrueCloudLab/frostfs-node
[#421] Try using badger for the write-cache
Signed-off-by: Alejandro Lopez <a.lopez@yadro.com>
This commit is contained in:
parent
65c72f3e0b
commit
1a0cb0f34a
56 changed files with 2234 additions and 747 deletions
|
@ -20,7 +20,8 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/pilorama"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/writecache"
|
||||
writecacheconfig "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/writecache/config"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/writecache/writecachebbolt"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger"
|
||||
cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
@ -35,9 +36,8 @@ func TestInitializationFailure(t *testing.T) {
|
|||
type openFileFunc func(string, int, fs.FileMode) (*os.File, error)
|
||||
|
||||
type testShardOpts struct {
|
||||
openFileMetabase openFileFunc
|
||||
openFileWriteCache openFileFunc
|
||||
openFilePilorama openFileFunc
|
||||
openFileMetabase openFileFunc
|
||||
openFilePilorama openFileFunc
|
||||
}
|
||||
|
||||
testShard := func(opts testShardOpts) ([]shard.Option, *teststore.TestStore, *teststore.TestStore) {
|
||||
|
@ -52,6 +52,13 @@ func TestInitializationFailure(t *testing.T) {
|
|||
|
||||
storages, smallFileStorage, largeFileStorage := newTestStorages(blobstorPath, 1<<20)
|
||||
|
||||
wcOpts := writecacheconfig.Options{
|
||||
Type: writecacheconfig.TypeBBolt,
|
||||
BBoltOptions: []writecachebbolt.Option{
|
||||
writecachebbolt.WithPath(writecachePath),
|
||||
},
|
||||
}
|
||||
|
||||
return []shard.Option{
|
||||
shard.WithID(sid),
|
||||
shard.WithLogger(&logger.Logger{Logger: zaptest.NewLogger(t)}),
|
||||
|
@ -66,10 +73,7 @@ func TestInitializationFailure(t *testing.T) {
|
|||
meta.WithPermissions(0700),
|
||||
meta.WithEpochState(epochState{})),
|
||||
shard.WithWriteCache(true),
|
||||
shard.WithWriteCacheOptions(
|
||||
writecache.WithPath(writecachePath),
|
||||
writecache.WithOpenFile(opts.openFileWriteCache),
|
||||
),
|
||||
shard.WithWriteCacheOptions(wcOpts),
|
||||
shard.WithPiloramaOptions(
|
||||
pilorama.WithPath(piloramaPath),
|
||||
pilorama.WithOpenFile(opts.openFilePilorama),
|
||||
|
@ -79,9 +83,8 @@ func TestInitializationFailure(t *testing.T) {
|
|||
|
||||
t.Run("blobstor", func(t *testing.T) {
|
||||
shardOpts, _, largeFileStorage := testShard(testShardOpts{
|
||||
openFileMetabase: os.OpenFile,
|
||||
openFileWriteCache: os.OpenFile,
|
||||
openFilePilorama: os.OpenFile,
|
||||
openFileMetabase: os.OpenFile,
|
||||
openFilePilorama: os.OpenFile,
|
||||
})
|
||||
largeFileStorage.SetOption(teststore.WithOpen(func(ro bool) error {
|
||||
return teststore.ErrDiskExploded
|
||||
|
@ -103,30 +106,11 @@ func TestInitializationFailure(t *testing.T) {
|
|||
openFileMetabaseSucceed.Store(true)
|
||||
}
|
||||
shardOpts, _, _ := testShard(testShardOpts{
|
||||
openFileMetabase: openFileMetabase,
|
||||
openFileWriteCache: os.OpenFile,
|
||||
openFilePilorama: os.OpenFile,
|
||||
openFileMetabase: openFileMetabase,
|
||||
openFilePilorama: os.OpenFile,
|
||||
})
|
||||
testEngineFailInitAndReload(t, true, shardOpts, beforeReload)
|
||||
})
|
||||
t.Run("write-cache", func(t *testing.T) {
|
||||
var openFileWriteCacheSucceed atomic.Bool
|
||||
openFileWriteCache := func(p string, f int, mode fs.FileMode) (*os.File, error) {
|
||||
if openFileWriteCacheSucceed.Load() {
|
||||
return os.OpenFile(p, f, mode)
|
||||
}
|
||||
return nil, teststore.ErrDiskExploded
|
||||
}
|
||||
beforeReload := func() {
|
||||
openFileWriteCacheSucceed.Store(true)
|
||||
}
|
||||
shardOpts, _, _ := testShard(testShardOpts{
|
||||
openFileMetabase: os.OpenFile,
|
||||
openFileWriteCache: openFileWriteCache,
|
||||
openFilePilorama: os.OpenFile,
|
||||
})
|
||||
testEngineFailInitAndReload(t, false, shardOpts, beforeReload)
|
||||
})
|
||||
t.Run("pilorama", func(t *testing.T) {
|
||||
var openFilePiloramaSucceed atomic.Bool
|
||||
openFilePilorama := func(p string, f int, mode fs.FileMode) (*os.File, error) {
|
||||
|
@ -139,9 +123,8 @@ func TestInitializationFailure(t *testing.T) {
|
|||
openFilePiloramaSucceed.Store(true)
|
||||
}
|
||||
shardOpts, _, _ := testShard(testShardOpts{
|
||||
openFileMetabase: os.OpenFile,
|
||||
openFileWriteCache: os.OpenFile,
|
||||
openFilePilorama: openFilePilorama,
|
||||
openFileMetabase: os.OpenFile,
|
||||
openFilePilorama: openFilePilorama,
|
||||
})
|
||||
testEngineFailInitAndReload(t, false, shardOpts, beforeReload)
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue