#include <grpc/support/port_platform.h>
+#include <random>
+
#include "src/core/ext/filters/client_channel/resolver_registry.h"
#include "src/core/ext/xds/xds_client.h"
#include "src/core/lib/gpr/env.h"
grpc_httpcli_context context_;
grpc_httpcli_response response_;
grpc_closure on_done_;
- Atomic<bool> on_done_called_{false};
+ std::atomic<bool> on_done_called_{false};
};
// A metadata server query to get the zone.
grpc_httpcli_get(&context_, pollent, resource_quota, &request,
ExecCtx::Get()->Now() + 10000, // 10s timeout
&on_done_, &response_);
- grpc_resource_quota_unref_internal(resource_quota);
}
GoogleCloud2ProdResolver::MetadataQuery::~MetadataQuery() {
void GoogleCloud2ProdResolver::MetadataQuery::MaybeCallOnDone(
grpc_error_handle error) {
bool expected = false;
- if (!on_done_called_.CompareExchangeStrong(
- &expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) {
+ if (!on_done_called_.compare_exchange_strong(expected, true,
+ std::memory_order_relaxed,
+ std::memory_order_relaxed)) {
// We've already called OnDone(), so just clean up.
GRPC_ERROR_UNREF(error);
Unref();
gpr_log(GPR_ERROR, "could not parse zone from metadata server: %s",
std::string(body).c_str());
} else {
- zone = std::string(body.substr(i));
+ zone = std::string(body.substr(i + 1));
}
}
resolver->ZoneQueryDone(std::move(zone));
void GoogleCloud2ProdResolver::StartXdsResolver() {
// Construct bootstrap JSON.
+ std::random_device rd;
+ std::mt19937 mt(rd());
+ std::uniform_int_distribution<uint64_t> dist(1, UINT64_MAX);
Json::Object node = {
- {"id", "C2P"},
+ {"id", absl::StrCat("C2P-", dist(mt))},
};
if (!zone_->empty()) {
node["locality"] = Json::Object{
const char* server_uri =
override_server != nullptr && strlen(override_server.get()) > 0
? override_server.get()
- : "directpath-trafficdirector.googleapis.com";
+ : "directpath-pa.googleapis.com";
Json bootstrap = Json::Object{
{"xds_servers",
Json::Array{