增加定时器,解决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;
|
cJSON *sub;
|
||||||
int64_t new_version;
|
int64_t new_version;
|
||||||
|
|
||||||
|
evtimer_del(&instance->ctx.timer_expires);
|
||||||
if(res!=CURLE_OK)
|
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",
|
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;
|
u_int64_t balance_seed;
|
||||||
struct doris_http_callback curlcbs;
|
struct doris_http_callback curlcbs;
|
||||||
char metauri[128], cur_version[128];
|
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) |
|
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);
|
(((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->status = FETCH_STATUS_META;
|
||||||
instance->statistic.field[DRS_FS_FILED_REQ_META] += 1;
|
instance->statistic.field[DRS_FS_FILED_REQ_META] += 1;
|
||||||
|
evtimer_add(&instance->ctx.timer_expires, &tv);
|
||||||
}
|
}
|
||||||
else
|
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)
|
static void doris_client_fs_output_timer_cb(int fd, short kind, void *userp)
|
||||||
{
|
{
|
||||||
struct doris_csum_param *param=(struct doris_csum_param *)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);
|
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);
|
pthread_mutex_lock(¶m->mutex_lock);
|
||||||
param->references++;
|
param->references++;
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ struct doris_confile_ctx
|
|||||||
{
|
{
|
||||||
struct doris_http_ctx *httpctx;
|
struct doris_http_ctx *httpctx;
|
||||||
char server[64];
|
char server[64];
|
||||||
|
struct event timer_expires;
|
||||||
|
|
||||||
MD5_CTX md5ctx;
|
MD5_CTX md5ctx;
|
||||||
long res_code;
|
long res_code;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ static int32_t check_producer_ready_sync(struct doris_business *business, struct
|
|||||||
/*request from sync client, check http posts-on-the-way first*/
|
/*request from sync client, check http posts-on-the-way first*/
|
||||||
if(business->posts_on_the_way)
|
if(business->posts_on_the_way)
|
||||||
{
|
{
|
||||||
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_DEBUG, "HttpProducer, posts-on-the-way: %d, meta response 300", business->posts_on_the_way);
|
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_DEBUG, "HttpProducer, business: %s, posts-on-the-way: %d, meta response 300", business->bizname, business->posts_on_the_way);
|
||||||
return 300;
|
return 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ static int32_t check_producer_ready_sync(struct doris_business *business, struct
|
|||||||
if((clientversion=atol(client_version)) > cur_version)
|
if((clientversion=atol(client_version)) > cur_version)
|
||||||
{
|
{
|
||||||
business_set_sync_peer_abnormal(business);
|
business_set_sync_peer_abnormal(business);
|
||||||
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_INFO, "HttpProducer, client version(%lu) is newer than server(%lu)", clientversion, cur_version);
|
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_INFO, "HttpProducer, business: %s, client version(%lu) is newer than server(%lu)", business->bizname, clientversion, cur_version);
|
||||||
return 300;
|
return 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#include "doris_server_http.h"
|
#include "doris_server_http.h"
|
||||||
|
|
||||||
struct doris_global_info g_doris_server_info;
|
struct doris_global_info g_doris_server_info;
|
||||||
static unsigned long doris_version_20210825=20210825L;
|
static unsigned long doris_version_20210826=20210826L;
|
||||||
|
|
||||||
int doris_mkdir_according_path(const char * path)
|
int doris_mkdir_according_path(const char * path)
|
||||||
{
|
{
|
||||||
@@ -434,7 +434,7 @@ int main(int argc, char **argv)
|
|||||||
evhttp_set_cb(manager_http, "/doris/statistic/status", manager_statistic_status_requests_cb, NULL);
|
evhttp_set_cb(manager_http, "/doris/statistic/status", manager_statistic_status_requests_cb, NULL);
|
||||||
evhttp_set_cb(manager_http, "/doris/statistic/threads", manager_statistic_threads_requests_cb, NULL);
|
evhttp_set_cb(manager_http, "/doris/statistic/threads", manager_statistic_threads_requests_cb, NULL);
|
||||||
evhttp_set_gencb(manager_http, manager_generic_requests_cb, NULL);
|
evhttp_set_gencb(manager_http, manager_generic_requests_cb, NULL);
|
||||||
g_doris_server_info.monitor = MESA_Monitor_instance_evhttp_new(manager_http, doris_version_20210825);
|
g_doris_server_info.monitor = MESA_Monitor_instance_evhttp_new(manager_http, doris_version_20210826);
|
||||||
if(evhttp_accept_socket(manager_http, g_doris_server_info.manager))
|
if(evhttp_accept_socket(manager_http, g_doris_server_info.manager))
|
||||||
{
|
{
|
||||||
printf("evhttp_accept_socket %d error!\n", g_doris_server_info.manager);
|
printf("evhttp_accept_socket %d error!\n", g_doris_server_info.manager);
|
||||||
|
|||||||
Reference in New Issue
Block a user