增加定时器,解决Pull元信息无响应时陷入停顿状态(valgrind)
This commit is contained in:
@@ -331,6 +331,7 @@ void doris_http_meta_done_cb(CURLcode res, long res_code, const char *err, void
|
||||
cJSON *sub;
|
||||
int64_t new_version;
|
||||
|
||||
evtimer_del(&instance->ctx.timer_expires);
|
||||
if(res!=CURLE_OK)
|
||||
{
|
||||
MESA_HANDLE_RUNTIME_LOGV2(instance->runtime_log, RLOG_LV_FATAL, "business: %s, Request meta failed, server: %s, cur_version=%lu, req_version=%lu, curlcode = %d, error: %s",
|
||||
@@ -397,6 +398,7 @@ static void doris_http_fetch_meta(struct doris_csum_instance *instance)
|
||||
u_int64_t balance_seed;
|
||||
struct doris_http_callback curlcbs;
|
||||
char metauri[128], cur_version[128];
|
||||
struct timeval tv={10, 0};
|
||||
|
||||
balance_seed = (((u_int64_t)rand()&0xFFFF) << 48) | (((u_int64_t)rand()&0xFFFF) << 32) |
|
||||
(((u_int64_t)rand()&0xFFFF) << 16) | ((u_int64_t)rand()&0xFFFF);
|
||||
@@ -436,6 +438,7 @@ static void doris_http_fetch_meta(struct doris_csum_instance *instance)
|
||||
{
|
||||
instance->status = FETCH_STATUS_META;
|
||||
instance->statistic.field[DRS_FS_FILED_REQ_META] += 1;
|
||||
evtimer_add(&instance->ctx.timer_expires, &tv);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -472,6 +475,16 @@ static void instance_fetch_cfg_timer_cb(int fd, short kind, void *userp)
|
||||
}
|
||||
}
|
||||
|
||||
/*httpsģʽ<C4A3>£<EFBFBD>ʹ<EFBFBD><CAB9>valgrind<6E><64><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>GET<45><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>done_cb<63><62><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><DEB7>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void instance_meta_expire_timer_cb(int fd, short kind, void *userp)
|
||||
{
|
||||
struct doris_csum_instance *instance = (struct doris_csum_instance *)userp;
|
||||
|
||||
doris_confile_ctx_destry(&instance->ctx);
|
||||
doris_http_fetch_meta(instance);
|
||||
MESA_HANDLE_RUNTIME_LOGV2(instance->runtime_log, RLOG_LV_FATAL, "\033[33mbusiness: %s, launch meta-get wired expired, retry....\033[0m", instance->args.bizname);
|
||||
}
|
||||
|
||||
static void doris_client_fs_output_timer_cb(int fd, short kind, void *userp)
|
||||
{
|
||||
struct doris_csum_param *param=(struct doris_csum_param *)userp;
|
||||
@@ -688,6 +701,7 @@ struct doris_csum_instance *doris_csum_instance_new(struct doris_csum_param *par
|
||||
{
|
||||
instance->httpins_backup2 = doris_http_instance_new(param->param_backup2, worker_evbase, runtimelog);
|
||||
}
|
||||
evtimer_assign(&instance->ctx.timer_expires, worker_evbase, instance_meta_expire_timer_cb, instance);
|
||||
|
||||
pthread_mutex_lock(¶m->mutex_lock);
|
||||
param->references++;
|
||||
|
||||
Reference in New Issue
Block a user