connection manager support exclude server_id for server side

fstore_storage_engine
YuQing 2023-05-05 16:22:04 +08:00
parent 90e144920a
commit 7c6673f78a
2 changed files with 14 additions and 2 deletions

View File

@ -557,6 +557,7 @@ int sf_connection_manager_init_ex(SFConnectionManager *cm,
cm->alive_detect.bg_thread_enabled = bg_thread_enabled;
cm->max_servers_per_group = 0;
cm->extra = NULL;
cm->exclude_server_id = 0;
cm->ops.get_connection = get_connection;
cm->ops.get_server_connection = get_server_connection;
@ -789,6 +790,10 @@ static int get_group_servers_by_all(SFConnectionManager *cm,
end = group->all.servers + group->all.count;
for (server=group->all.servers; server<end; server++) {
if (server->id == cm->exclude_server_id) {
continue;
}
if ((conn=make_connection(cm, server->addr_array,
&result)) == NULL)
{

View File

@ -103,8 +103,9 @@ typedef struct sf_cm_operations {
} SFCMOperations;
typedef struct sf_connection_manager {
short server_group_index;
short max_servers_per_group;
int exclude_server_id; //for server side
uint16_t max_servers_per_group;
uint8_t server_group_index;
struct {
bool bg_thread_enabled;
struct common_blocked_queue queue;
@ -141,6 +142,12 @@ static inline int sf_connection_manager_init(SFConnectionManager *cm,
connect_done_callback, args, NULL, bg_thread_enabled);
}
static inline void sf_connection_manager_set_exclude_server_id(
SFConnectionManager *cm, const int exclude_server_id)
{
cm->exclude_server_id = exclude_server_id;
}
int sf_connection_manager_add(SFConnectionManager *cm, const int group_id,
FCServerInfo **servers, const int count);