Browse Source

ETCP: loadbalancer исключает down-линки, link_status=1 при инициализации

- etcp_loadbalancer_select_link() теперь пропускает линки со статусом != 1
- При установке initialized=1 сразу выставляется link_status=1 (up)
- Добавлено логирование при изменении статуса линка на UP
nodeinfo-routing-update
Evgeny 2 months ago
parent
commit
0490c846c2
  1. 6
      src/etcp_connections.c
  2. 2
      src/etcp_loadbalancer.c

6
src/etcp_connections.c

@ -803,6 +803,9 @@ static void etcp_connections_read_callback_socket(socket_t sock, void* arg) {
memory_pool_free(e_sock->instance->pkt_pool, pkt);
link->initialized = 1;// получен init request (server), считаем линк уже готовым к работе
link->link_status = 1; // Link is up after successful initialization
DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] Link %p (local_id=%d) initialized and marked as UP (server)",
link->etcp->log_name, link, link->local_link_id);
// Start keepalive timer
if (!link->keepalive_timer && link->keepalive_interval > 0) {
@ -910,6 +913,9 @@ process_decrypted:
// Mark link as initialized
// DEBUG_DEBUG(DEBUG_CATEGORY_CONNECTION, "Setting link->initialized=1, link=%p, is_server=%d", link, link->is_server);
link->initialized = 1;// получен init response (client)
link->link_status = 1; // Link is up after successful initialization
DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] Link %p (local_id=%d) initialized and marked as UP (client)",
link->etcp->log_name, link, link->local_link_id);
// Start keepalive timer
if (!link->keepalive_timer && link->keepalive_interval > 0) {

2
src/etcp_loadbalancer.c

@ -44,7 +44,7 @@ struct ETCP_LINK* etcp_loadbalancer_select_link(struct ETCP_CONN* etcp) {
// link_index, link, link->initialized, link->shaper_timer==NULL?1:0,
// (unsigned long long)link->shaper_load_time_tb, (unsigned long long)link->shaper_sub_nanotime);
if (!link->initialized || link->shaper_timer) {// если установлен таймер - значит надо ждать. не рассматриваем этот линк
if (!link->initialized || link->shaper_timer || link->link_status != 1) {// если установлен таймер - значит надо ждать. не рассматриваем этот линк
link = link->next;
continue;
}

Loading…
Cancel
Save