Skip to content

Commit

Permalink
Revert "Revert "支持刷新模式的配置""
Browse files Browse the repository at this point in the history
This reverts commit 831424f.
  • Loading branch information
nybuxtsui committed Oct 9, 2014
1 parent 831424f commit f3c15b5
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 12 deletions.
5 changes: 3 additions & 2 deletions bdb/bdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type BdbConfig struct {
RemoteAddr []string
RemotePeer string
Verbose bool
Flush int
}

type DbEnv struct {
Expand Down Expand Up @@ -145,10 +146,10 @@ func Start(config BdbConfig) *DbEnv {

if config.RepMgr {
log.Info("start_repmgr|%v", args)
C.start_mgr(C.int(len(argv)), &argv[0], unsafe.Pointer(dbenv))
C.start_mgr(C.int(len(argv)), &argv[0], C.int(config.Flush), unsafe.Pointer(dbenv))
} else {
log.Info("start_base|%v", args)
C.start_base(C.int(len(argv)), &argv[0], unsafe.Pointer(dbenv))
C.start_base(C.int(len(argv)), &argv[0], C.int(config.Flush), unsafe.Pointer(dbenv))
}

for _, arg := range argv {
Expand Down
4 changes: 2 additions & 2 deletions bdb/bdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ extern "C" {

void log_error(const char *file, const char *function, int line, const char *msg, int err);

int start_base(int argc, char *argv[], void *ptr);
int start_mgr(int argc, char *argv[], void *ptr);
int start_base(int argc, char *argv[], int flush, void *ptr);
int start_mgr(int argc, char *argv[], int flush, void *ptr);

int db_get(DB *dbp, DB_TXN *txn, char *_key, unsigned int keylen, char **_data, unsigned int *datalen, unsigned int flags);
int db_put(DB *dbp, DB_TXN *txn, char *_key, unsigned int keylen, char *_data, unsigned int datalen, unsigned int flags);
Expand Down
5 changes: 3 additions & 2 deletions bdb/rep_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ static const char *progname = "ex_rep_base";
static void event_callback __P((DB_ENV *, u_int32_t, void *));

int
start_base(argc, argv, ptr)
start_base(argc, argv, flush, ptr)
int argc;
char *argv[];
int flush;
void *ptr;
{
DB_ENV *dbenv;
Expand Down Expand Up @@ -104,7 +105,7 @@ start_base(argc, argv, ptr)
goto err;
my_app_data.comm_infrastructure = machtab;

if ((ret = env_init(dbenv, setup_info.home)) != 0)
if ((ret = env_init(dbenv, setup_info.home, flush)) != 0)
goto err;

/*
Expand Down
11 changes: 8 additions & 3 deletions bdb/rep_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,9 +428,10 @@ create_env(progname, dbenvp)

/* Open and configure an environment. */
int
env_init(dbenv, home)
env_init(dbenv, home, flush)
DB_ENV *dbenv;
const char *home;
int flush;
{
u_int32_t flags;
int ret;
Expand All @@ -439,8 +440,12 @@ env_init(dbenv, home)
//(void)dbenv->set_cachesize(dbenv, 0, CACHESIZE, 0);
//DB_TXN_NOSYNC在app/os崩溃时会丢失数据
//DB_TXN_WRITE_NOSYNC在os崩溃时会丢失数据
(void)dbenv->set_flags(dbenv, DB_TXN_NOSYNC, 1);
//(void)dbenv->set_flags(dbenv, DB_TXN_WRITE_NOSYNC, 1);

if (flush == 2) {
(void)dbenv->set_flags(dbenv, DB_TXN_WRITE_NOSYNC, 1);
} else if (flush == 0) {
(void)dbenv->set_flags(dbenv, DB_TXN_NOSYNC, 1);
}

flags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL |
DB_INIT_REP | DB_INIT_TXN | DB_RECOVER | DB_THREAD;
Expand Down
2 changes: 1 addition & 1 deletion bdb/rep_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ void *checkpoint_thread __P((void *));
int common_rep_setup __P((DB_ENV *, int, char *[], SETUP_DATA *));
int create_env __P((const char *, DB_ENV **));
int doloop __P((DB_ENV *, SHARED_DATA *, void *));
int env_init __P((DB_ENV *, const char *));
int env_init __P((DB_ENV *, const char *, int flush));
int finish_support_threads __P((thread_t *, thread_t *, thread_t *));
void *log_archive_thread __P((void *));
int start_support_threads __P((DB_ENV *, supthr_args *, thread_t *,
Expand Down
5 changes: 3 additions & 2 deletions bdb/rep_mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ static const char *progname = "ex_rep_mgr";
static void event_callback __P((DB_ENV *, u_int32_t, void *));

int
start_mgr(argc, argv, ptr)
start_mgr(argc, argv, flush, ptr)
int argc;
char *argv[];
int flush;
void *ptr;
{
DB_ENV *dbenv;
Expand Down Expand Up @@ -136,7 +137,7 @@ start_mgr(argc, argv, ptr)
* - Site list - return a list of sites currently known to repmgr.
*/

if ((ret = env_init(dbenv, setup_info.home)) != 0)
if ((ret = env_init(dbenv, setup_info.home, flush)) != 0)
goto err;

/* Start checkpoint and log archive threads. */
Expand Down
1 change: 1 addition & 0 deletions bdbd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ localaddr = "127.0.0.1:2324"
#remoteaddr = ["127.0.0.1:2325"]
master = true
repmgr = false
flush = 2

[[logger]]
name = "default"
Expand Down
1 change: 1 addition & 0 deletions bdbd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ func main() {
Listen string
} `toml:"server"`
}
config.Bdb.Flush = 1
_, err = toml.Decode(string(configstr), &config)
if err != nil {
log.Println("ERROR: decode config failed:", err)
Expand Down

0 comments on commit f3c15b5

Please sign in to comment.