[PATCH]add log handle for maat_wrap_redis_command
This commit is contained in:
100
src/maat_rule.c
100
src/maat_rule.c
@@ -55,7 +55,8 @@ maat_runtime_create(long long version, struct maat *maat_inst)
|
||||
maat_rt->sequence_map = maat_kv_store_new();
|
||||
maat_rt->logger = maat_inst->logger;
|
||||
maat_rt->ref_garbage_bin = maat_inst->garbage_bin;
|
||||
maat_rt->ref_cnt = alignment_int64_array_alloc(maat_inst->opts.nr_worker_thread);
|
||||
maat_rt->ref_cnt =
|
||||
alignment_int64_array_alloc(maat_inst->opts.nr_worker_thread);
|
||||
|
||||
return maat_rt;
|
||||
}
|
||||
@@ -79,17 +80,20 @@ static void maat_runtime_destroy(struct maat_runtime *maat_rt)
|
||||
FREE(maat_rt);
|
||||
}
|
||||
|
||||
static void maat_runtime_commit(struct maat_runtime *maat_rt, int update_type,
|
||||
long long maat_rt_version, struct log_handle *logger)
|
||||
static void
|
||||
maat_runtime_commit(struct maat_runtime *maat_rt, int update_type,
|
||||
long long maat_rt_version, struct log_handle *logger)
|
||||
{
|
||||
for (size_t i = 0; i < maat_rt->max_table_num; i++) {
|
||||
table_manager_commit_runtime(maat_rt->ref_tbl_mgr, i, update_type, maat_rt_version);
|
||||
table_manager_commit_runtime(maat_rt->ref_tbl_mgr, i,
|
||||
update_type, maat_rt_version);
|
||||
}
|
||||
|
||||
maat_rt->last_update_time = time(NULL);
|
||||
}
|
||||
|
||||
static void maat_start_cb(long long new_version, int update_type, void *u_param)
|
||||
static void
|
||||
maat_start_cb(long long new_version, int update_type, void *u_param)
|
||||
{
|
||||
size_t i = 0;
|
||||
enum table_type table_type = TABLE_TYPE_INVALID;
|
||||
@@ -99,13 +103,16 @@ static void maat_start_cb(long long new_version, int update_type, void *u_param)
|
||||
maat_inst->new_version = new_version;
|
||||
|
||||
if (update_type == MAAT_UPDATE_TYPE_FULL) {
|
||||
maat_inst->creating_maat_rt = maat_runtime_create(new_version, maat_inst);
|
||||
maat_inst->creating_maat_rt =
|
||||
maat_runtime_create(new_version, maat_inst);
|
||||
|
||||
for (i = 0; i < max_table_cnt; i++) {
|
||||
table_type = table_manager_get_table_type(maat_inst->tbl_mgr, i);
|
||||
if (table_type == TABLE_TYPE_COMPILE) {
|
||||
// compile runtime need a reference to maat runtime
|
||||
void *compile_rt = table_manager_get_updating_runtime(maat_inst->tbl_mgr, i);
|
||||
void *compile_rt =
|
||||
table_manager_get_updating_runtime(maat_inst->tbl_mgr, i);
|
||||
|
||||
compile_runtime_init(compile_rt, maat_inst->creating_maat_rt);
|
||||
}
|
||||
}
|
||||
@@ -117,12 +124,14 @@ static void maat_start_cb(long long new_version, int update_type, void *u_param)
|
||||
table_type = table_manager_get_table_type(maat_inst->tbl_mgr, i);
|
||||
if (table_type == TABLE_TYPE_PLUGIN) {
|
||||
void *schema = table_manager_get_schema(maat_inst->tbl_mgr, i);
|
||||
plugin_table_all_callback_start((struct plugin_schema *)schema, update_type);
|
||||
plugin_table_all_callback_start((struct plugin_schema *)schema,
|
||||
update_type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int maat_update_cb(const char *table_name, const char *line, void *u_param)
|
||||
static int
|
||||
maat_update_cb(const char *table_name, const char *line, void *u_param)
|
||||
{
|
||||
if (NULL == table_name || NULL == line || NULL == u_param) {
|
||||
return 0;
|
||||
@@ -144,12 +153,15 @@ static int maat_update_cb(const char *table_name, const char *line, void *u_para
|
||||
|
||||
// find conjunction id for table_id
|
||||
long long conj_parent_table_ids[MAX_CONJ_PARENTS_NUM];
|
||||
int conj_parent_table_cnt = table_manager_get_conj_parent_table_ids(maat_inst->tbl_mgr, table_name,
|
||||
conj_parent_table_ids, MAX_CONJ_PARENTS_NUM);
|
||||
int conj_parent_table_cnt =
|
||||
table_manager_get_conj_parent_table_ids(maat_inst->tbl_mgr, table_name,
|
||||
conj_parent_table_ids,
|
||||
MAX_CONJ_PARENTS_NUM);
|
||||
if (conj_parent_table_cnt > 0) {
|
||||
for (int i = 0; i < conj_parent_table_cnt; i++) {
|
||||
int ret = table_manager_update_runtime(maat_inst->tbl_mgr, table_name,
|
||||
(int)conj_parent_table_ids[i], line, update_type);
|
||||
(int)conj_parent_table_ids[i],
|
||||
line, update_type);
|
||||
if (ret < 0) {
|
||||
log_fatal(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"[%s:%d] table<%s> update runtime error for rule:%s",
|
||||
@@ -176,20 +188,23 @@ static long long maat_runtime_rule_num(struct maat_runtime *maat_rt)
|
||||
long long total = 0;
|
||||
|
||||
for (size_t i = 0; i < maat_rt->max_table_num; i++) {
|
||||
long long rule_cnt = table_manager_runtime_rule_count(maat_rt->ref_tbl_mgr, i);
|
||||
long long rule_cnt =
|
||||
table_manager_runtime_rule_count(maat_rt->ref_tbl_mgr, i);
|
||||
total += rule_cnt;
|
||||
|
||||
if (rule_cnt != 0) {
|
||||
log_info(maat_rt->logger, MODULE_MAAT_RULE,
|
||||
"table:<%s> rule_count:%lld",
|
||||
table_manager_get_table_name(maat_rt->ref_tbl_mgr, i), rule_cnt);
|
||||
table_manager_get_table_name(maat_rt->ref_tbl_mgr, i),
|
||||
rule_cnt);
|
||||
}
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
static void maat_plugin_table_all_callback_finish(struct table_manager *tbl_mgr)
|
||||
static void
|
||||
maat_plugin_table_all_callback_finish(struct table_manager *tbl_mgr)
|
||||
{
|
||||
size_t max_table_cnt = table_manager_table_size(tbl_mgr);
|
||||
enum table_type table_type = TABLE_TYPE_INVALID;
|
||||
@@ -205,7 +220,8 @@ static void maat_plugin_table_all_callback_finish(struct table_manager *tbl_mgr)
|
||||
}
|
||||
}
|
||||
|
||||
static void maat_plugin_table_garbage_collect_routine(struct table_manager *tbl_mgr)
|
||||
static void
|
||||
maat_plugin_table_garbage_collect_routine(struct table_manager *tbl_mgr)
|
||||
{
|
||||
size_t max_table_cnt = table_manager_table_size(tbl_mgr);
|
||||
enum table_type table_type = TABLE_TYPE_INVALID;
|
||||
@@ -254,9 +270,14 @@ static void maat_finish_cb(void *u_param)
|
||||
maat_plugin_table_all_callback_finish(maat_inst->tbl_mgr);
|
||||
|
||||
if (maat_inst->creating_maat_rt != NULL) {
|
||||
maat_runtime_commit(maat_inst->creating_maat_rt, MAAT_UPDATE_TYPE_FULL,
|
||||
maat_inst->creating_maat_rt->version, maat_inst->logger);
|
||||
maat_inst->creating_maat_rt->rule_num = maat_runtime_rule_num(maat_inst->creating_maat_rt);
|
||||
maat_runtime_commit(maat_inst->creating_maat_rt,
|
||||
MAAT_UPDATE_TYPE_FULL,
|
||||
maat_inst->creating_maat_rt->version,
|
||||
maat_inst->logger);
|
||||
|
||||
maat_inst->creating_maat_rt->rule_num =
|
||||
maat_runtime_rule_num(maat_inst->creating_maat_rt);
|
||||
|
||||
log_info(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"Full config version %llu load %d entries complete",
|
||||
maat_inst->creating_maat_rt->version,
|
||||
@@ -265,7 +286,10 @@ static void maat_finish_cb(void *u_param)
|
||||
maat_inst->maat_rt->version = maat_inst->maat_version;
|
||||
maat_runtime_commit(maat_inst->maat_rt, MAAT_UPDATE_TYPE_INC,
|
||||
maat_inst->maat_rt->version, maat_inst->logger);
|
||||
maat_inst->maat_rt->rule_num = maat_runtime_rule_num(maat_inst->maat_rt);
|
||||
|
||||
maat_inst->maat_rt->rule_num =
|
||||
maat_runtime_rule_num(maat_inst->maat_rt);
|
||||
|
||||
log_info(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"Inc config version %llu load %d entries complete",
|
||||
maat_inst->maat_rt->version,
|
||||
@@ -290,21 +314,23 @@ void maat_read_full_config(struct maat *maat_inst)
|
||||
redis_ctx = &(maat_inst->opts.redis_ctx);
|
||||
log_info(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"Maat initiate from Redis %s:%hu db%d",
|
||||
redis_ctx->redis_ip, redis_ctx->redis_port, redis_ctx->redis_db);
|
||||
redis_ctx->redis_ip, redis_ctx->redis_port,
|
||||
redis_ctx->redis_db);
|
||||
redis_ctx->read_ctx = maat_connect_redis(redis_ctx->redis_ip,
|
||||
redis_ctx->redis_port,
|
||||
redis_ctx->redis_db,
|
||||
maat_inst->logger);
|
||||
redis_ctx->redis_port,
|
||||
redis_ctx->redis_db,
|
||||
maat_inst->logger);
|
||||
if (redis_ctx->read_ctx != NULL) {
|
||||
redis_monitor_traverse(maat_inst->maat_version, redis_ctx,
|
||||
maat_start_cb, maat_update_cb, maat_finish_cb,
|
||||
maat_inst);
|
||||
maat_start_cb, maat_update_cb,
|
||||
maat_finish_cb, maat_inst);
|
||||
}
|
||||
|
||||
if (NULL == maat_inst->creating_maat_rt) {
|
||||
log_fatal(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"[%s:%d] At initiation: NO effective rule in redis %s:%hu db%d",
|
||||
__FUNCTION__, __LINE__, redis_ctx->redis_ip, redis_ctx->redis_port,
|
||||
"[%s:%d] At initiation: NO effective rule in redis"
|
||||
" %s:%hu db%d", __FUNCTION__, __LINE__,
|
||||
redis_ctx->redis_ip, redis_ctx->redis_port,
|
||||
redis_ctx->redis_db);
|
||||
}
|
||||
break;
|
||||
@@ -326,7 +352,8 @@ void maat_read_full_config(struct maat *maat_inst)
|
||||
if (ret < 0) {
|
||||
log_fatal(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"[%s:%d] Maat re-initiate with JSON file %s failed: %s",
|
||||
__FUNCTION__, __LINE__, maat_inst->opts.json_ctx.json_file, err_str);
|
||||
__FUNCTION__, __LINE__, maat_inst->opts.json_ctx.json_file,
|
||||
err_str);
|
||||
}
|
||||
|
||||
config_monitor_traverse(maat_inst->maat_version,
|
||||
@@ -347,13 +374,15 @@ void maat_read_full_config(struct maat *maat_inst)
|
||||
maat_inst->maat_rt = maat_inst->creating_maat_rt;
|
||||
maat_inst->creating_maat_rt = NULL;
|
||||
maat_inst->is_running = 1;
|
||||
|
||||
if (maat_inst->maat_rt != NULL) {
|
||||
maat_inst->maat_version = maat_inst->maat_rt->version;
|
||||
maat_inst->last_full_version = maat_inst->maat_rt->version;
|
||||
}
|
||||
}
|
||||
|
||||
long long maat_runtime_get_sequence(struct maat_runtime *maat_rt, const char *key)
|
||||
long long maat_runtime_get_sequence(struct maat_runtime *maat_rt,
|
||||
const char *key)
|
||||
{
|
||||
if (NULL == maat_rt || NULL == key) {
|
||||
return -1;
|
||||
@@ -406,7 +435,8 @@ void *rule_monitor_loop(void *arg)
|
||||
/* if deferred load on */
|
||||
if (maat_inst->opts.deferred_load_on != 0) {
|
||||
log_info(maat_inst->logger, MODULE_MAAT_RULE,
|
||||
"Deferred Loading ON, updating in %s:%d", __FUNCTION__, __LINE__);
|
||||
"Deferred Loading ON, updating in %s:%d",
|
||||
__FUNCTION__, __LINE__);
|
||||
maat_read_full_config(maat_inst);
|
||||
}
|
||||
pthread_mutex_unlock(&(maat_inst->background_update_mutex));
|
||||
@@ -484,8 +514,9 @@ void *rule_monitor_loop(void *arg)
|
||||
old_maat_rt->version, maat_inst->maat_rt->version);
|
||||
}
|
||||
|
||||
maat_inst->stat->zombie_rs_stream += alignment_int64_array_sum(old_maat_rt->ref_cnt,
|
||||
maat_inst->opts.nr_worker_thread);
|
||||
maat_inst->stat->zombie_rs_stream +=
|
||||
alignment_int64_array_sum(old_maat_rt->ref_cnt,
|
||||
maat_inst->opts.nr_worker_thread);
|
||||
maat_garbage_bagging(maat_inst->garbage_bin, old_maat_rt, NULL,
|
||||
garbage_maat_runtime_destroy);
|
||||
}
|
||||
@@ -514,7 +545,8 @@ void *rule_monitor_loop(void *arg)
|
||||
maat_plugin_table_garbage_collect_routine(maat_inst->tbl_mgr);
|
||||
|
||||
if ((1 == maat_inst->opts.stat_on) && (time(NULL) % 2 == 0)) {
|
||||
maat_stat_output(maat_inst->stat, maat_inst->maat_version, maat_inst->opts.perf_on);
|
||||
maat_stat_output(maat_inst->stat, maat_inst->maat_version,
|
||||
maat_inst->opts.perf_on);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user