envoyproxy/envoy

HDS should't initialize HdsCluster hosts as FAILED_ACTIVE_HC

Open

#5408 aperta il 24 dic 2018

Vedi su GitHub
 (5 commenti) (0 reazioni) (0 assegnatari)C++ (5373 fork)batch import
area/hdsenhancementhelp wanted

Metriche repository

Star
 (27.997 star)
Metriche merge PR
 (Merge medio 8g) (378 PR mergiate in 30 g)

Descrizione

Title: HDS should't initialize HdsCluster hosts as FAILED_ACTIVE_HC

Description: HDS should't initialize HdsCluster hosts as FAILED_ACTIVE_HC, because when we may use hds as a heartbeat reporting channel with only endpoints and no health checks as follows:

cluster_health_checks {
  cluster_name: "user"
  locality_endpoints {
    endpoints {
      address {
        socket_address {
          address: "172.16.0.1"
          port_value: 8080
        }      
      }      
    }
  }
}
interval {
  seconds: 5
}

we should chanage the initializing as follows:

void HdsCluster::initialize(std::function<void()> callback) {
  initialization_complete_callback_ = callback;
  //for (const auto& host : *initial_hosts_) {
  //  host->healthFlagSet(Host::HealthFlag::FAILED_ACTIVE_HC);
  //}

  auto& first_host_set = priority_set_.getOrCreateHostSet(0);
  auto healthy = createHealthyHostList(*initial_hosts_);

  first_host_set.updateHosts(initial_hosts_, healthy, HostsPerLocalityImpl::empty(),
                             HostsPerLocalityImpl::empty(), {}, *initial_hosts_, {}, absl::nullopt);
}

related to issue: #1845

Guida contributor