forked from mirror/ledisdb
change configuration
Config struct now not includes other configs, but shows all People can see configuration clearly
This commit is contained in:
parent
edeee8f645
commit
7a763da082
|
@ -2,5 +2,6 @@
|
|||
|
||||
. ./dev.sh
|
||||
|
||||
go get -u github.com/siddontang/go-log/log
|
||||
go get -u github.com/siddontang/go-snappy/snappy
|
||||
go get github.com/siddontang/go-log/log
|
||||
go get github.com/siddontang/go-snappy/snappy
|
||||
go get github.com/siddontang/copier
|
|
@ -2,13 +2,16 @@
|
|||
"addr": "127.0.0.1:6380",
|
||||
"data_dir": "/tmp/ledis_server",
|
||||
"db": {
|
||||
"data_db" : {
|
||||
"compression": false,
|
||||
"block_size": 32768,
|
||||
"write_buffer_size": 67108864,
|
||||
"cache_size": 524288000,
|
||||
"max_open_files":1024
|
||||
}
|
||||
},
|
||||
|
||||
"binlog" : {
|
||||
"use" : false,
|
||||
"max_open_files" : 1024
|
||||
},
|
||||
|
||||
"access_log" : "access.log"
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package ledis
|
||||
|
||||
type Config struct {
|
||||
DataDir string `json:"data_dir"`
|
||||
|
||||
DB struct {
|
||||
Compression bool `json:"compression"`
|
||||
BlockSize int `json:"block_size"`
|
||||
WriteBufferSize int `json:"write_buffer_size"`
|
||||
CacheSize int `json:"cache_size"`
|
||||
MaxOpenFiles int `json:"max_open_files"`
|
||||
} `json:"db"`
|
||||
|
||||
BinLog struct {
|
||||
Use bool `json:"use"`
|
||||
MaxFileSize int `json:"max_file_size"`
|
||||
MaxFileNum int `json:"max_file_num"`
|
||||
} `json:"binlog"`
|
||||
}
|
|
@ -3,6 +3,7 @@ package ledis
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/siddontang/copier"
|
||||
"github.com/siddontang/go-log/log"
|
||||
"github.com/siddontang/ledisdb/leveldb"
|
||||
"path"
|
||||
|
@ -10,18 +11,6 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
DataDir string `json:"data_dir"`
|
||||
|
||||
//if you not set leveldb path, use data_dir/data
|
||||
DataDB leveldb.Config `json:"data_db"`
|
||||
|
||||
UseBinLog bool `json:"use_bin_log"`
|
||||
|
||||
//if you not set bin log path, use data_dir/bin_log
|
||||
BinLog BinLogConfig `json:"bin_log"`
|
||||
}
|
||||
|
||||
type DB struct {
|
||||
l *Ledis
|
||||
|
||||
|
@ -60,16 +49,31 @@ func OpenWithJsonConfig(configJson json.RawMessage) (*Ledis, error) {
|
|||
return Open(&cfg)
|
||||
}
|
||||
|
||||
func openDB(cfg *Config) (*leveldb.DB, error) {
|
||||
dbPath := path.Join(cfg.DataDir, "data")
|
||||
|
||||
dbCfg := new(leveldb.Config)
|
||||
copier.Copy(dbCfg, &cfg.DB)
|
||||
dbCfg.Path = dbPath
|
||||
|
||||
return leveldb.Open(dbCfg)
|
||||
}
|
||||
|
||||
func openBinLog(cfg *Config) (*BinLog, error) {
|
||||
binLogPath := path.Join(cfg.DataDir, "bin_log")
|
||||
c := new(BinLogConfig)
|
||||
copier.Copy(c, &cfg.BinLog)
|
||||
c.Path = binLogPath
|
||||
|
||||
return NewBinLog(c)
|
||||
}
|
||||
|
||||
func Open(cfg *Config) (*Ledis, error) {
|
||||
if len(cfg.DataDir) == 0 {
|
||||
return nil, fmt.Errorf("must set correct data_dir")
|
||||
}
|
||||
|
||||
if len(cfg.DataDB.Path) == 0 {
|
||||
cfg.DataDB.Path = path.Join(cfg.DataDir, "data")
|
||||
}
|
||||
|
||||
ldb, err := leveldb.Open(&cfg.DataDB)
|
||||
ldb, err := openDB(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -81,11 +85,8 @@ func Open(cfg *Config) (*Ledis, error) {
|
|||
|
||||
l.ldb = ldb
|
||||
|
||||
if cfg.UseBinLog {
|
||||
if len(cfg.BinLog.Path) == 0 {
|
||||
cfg.BinLog.Path = path.Join(cfg.DataDir, "bin_log")
|
||||
}
|
||||
l.binlog, err = NewBinLog(&cfg.BinLog)
|
||||
if cfg.BinLog.Use {
|
||||
l.binlog, err = openBinLog(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ func getTestDB() *DB {
|
|||
var d = []byte(`
|
||||
{
|
||||
"data_dir" : "/tmp/test_ledis",
|
||||
"data_db" : {
|
||||
"db" : {
|
||||
"compression":true,
|
||||
"block_size" : 32768,
|
||||
"write_buffer_size" : 2097152,
|
||||
|
|
|
@ -35,8 +35,8 @@ func TestReplication(t *testing.T) {
|
|||
master, err = OpenWithJsonConfig([]byte(`
|
||||
{
|
||||
"data_dir" : "/tmp/test_repl/master",
|
||||
"use_bin_log" : true,
|
||||
"bin_log" : {
|
||||
"binlog" : {
|
||||
"use" : true,
|
||||
"max_file_size" : 50
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/copier"
|
||||
"github.com/siddontang/ledisdb/ledis"
|
||||
"net"
|
||||
"path"
|
||||
|
@ -30,10 +31,6 @@ func NewApp(cfg *Config) (*App, error) {
|
|||
return nil, fmt.Errorf("must set data_dir first")
|
||||
}
|
||||
|
||||
if len(cfg.DB.DataDir) == 0 {
|
||||
cfg.DB.DataDir = cfg.DataDir
|
||||
}
|
||||
|
||||
app := new(App)
|
||||
|
||||
app.quit = make(chan struct{})
|
||||
|
@ -66,7 +63,7 @@ func NewApp(cfg *Config) (*App, error) {
|
|||
}
|
||||
}
|
||||
|
||||
if app.ldb, err = ledis.Open(&cfg.DB); err != nil {
|
||||
if app.ldb, err = openLedis(cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -75,6 +72,19 @@ func NewApp(cfg *Config) (*App, error) {
|
|||
return app, nil
|
||||
}
|
||||
|
||||
func openLedis(cfg *Config) (*ledis.Ledis, error) {
|
||||
c := new(ledis.Config)
|
||||
|
||||
c.DataDir = cfg.DataDir
|
||||
|
||||
copier.Copy(&c.DB, &cfg.DB)
|
||||
copier.Copy(&c.BinLog, &cfg.BinLog)
|
||||
|
||||
println("max open files", c.DB.MaxOpenFiles)
|
||||
|
||||
return ledis.Open(c)
|
||||
}
|
||||
|
||||
func (app *App) Close() {
|
||||
if app.closed {
|
||||
return
|
||||
|
|
|
@ -34,13 +34,12 @@ func startTestApp() {
|
|||
{
|
||||
"data_dir" : "/tmp/testdb",
|
||||
"addr" : "127.0.0.1:16380",
|
||||
"db" : {
|
||||
"data_db" : {
|
||||
"compression":true,
|
||||
"block_size" : 32768,
|
||||
"write_buffer_size" : 2097152,
|
||||
"cache_size" : 20971520
|
||||
}
|
||||
"db" : {
|
||||
"compression":true,
|
||||
"block_size" : 32768,
|
||||
"write_buffer_size" : 2097152,
|
||||
"cache_size" : 20971520,
|
||||
"max_open_files" : 1024
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
|
|
@ -32,7 +32,7 @@ func TestReplication(t *testing.T) {
|
|||
masterCfg := new(Config)
|
||||
masterCfg.DataDir = fmt.Sprintf("%s/master", data_dir)
|
||||
masterCfg.Addr = "127.0.0.1:11182"
|
||||
masterCfg.DB.UseBinLog = true
|
||||
masterCfg.BinLog.Use = true
|
||||
|
||||
var master *App
|
||||
var slave *App
|
||||
|
|
|
@ -2,7 +2,6 @@ package server
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/siddontang/ledisdb/ledis"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
|
@ -11,8 +10,19 @@ type Config struct {
|
|||
|
||||
DataDir string `json:"data_dir"`
|
||||
|
||||
//if you not set db path, use data_dir
|
||||
DB ledis.Config `json:"db"`
|
||||
DB struct {
|
||||
Compression bool `json:"compression"`
|
||||
BlockSize int `json:"block_size"`
|
||||
WriteBufferSize int `json:"write_buffer_size"`
|
||||
CacheSize int `json:"cache_size"`
|
||||
MaxOpenFiles int `json:"max_open_files"`
|
||||
} `json:"db"`
|
||||
|
||||
BinLog struct {
|
||||
Use bool `json:"use"`
|
||||
MaxFileSize int `json:"max_file_size"`
|
||||
MaxFileNum int `json:"max_file_num"`
|
||||
} `json:"binlog"`
|
||||
|
||||
//set slaveof to enable replication from master
|
||||
//empty, no replication
|
||||
|
|
Loading…
Reference in New Issue