diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml index 5df0012b3..5b2802e32 100644 --- a/.azure-pipelines/pipelines.yml +++ b/.azure-pipelines/pipelines.yml @@ -61,6 +61,23 @@ stages: parameters: ciTarget: $(CI_TARGET) +- stage: test_gcc + dependsOn: ["check"] + pool: "x64-large" + jobs: + - job: test_gcc + displayName: "do_ci.sh" + strategy: + maxParallel: 1 + matrix: + test_gcc: + CI_TARGET: "test_gcc" + timeoutInMinutes: 120 + steps: + - template: bazel.yml + parameters: + ciTarget: $(CI_TARGET) + - stage: sanitizers dependsOn: ["test"] pool: "x64-large" @@ -102,6 +119,7 @@ stages: - stage: release dependsOn: - "clang_tidy" + - "test_gcc" - "sanitizers" - "coverage" condition: eq(variables['PostSubmit'], true) diff --git a/source/client/client.cc b/source/client/client.cc index a02b38d76..283e0354a 100644 --- a/source/client/client.cc +++ b/source/client/client.cc @@ -79,6 +79,7 @@ bool Main::run() { *options_, dns_resolver_factory, std::move(typed_dns_resolver_config), time_system); if (!process_or_status.ok()) { ENVOY_LOG(error, "Unable to create ProcessImpl: {}", process_or_status.status().ToString()); + Envoy::Network::DnsResolverFactory::terminateFactories(); return false; } process = std::move(*process_or_status); diff --git a/source/client/process_impl.cc b/source/client/process_impl.cc index ca02be837..53adf7bfa 100644 --- a/source/client/process_impl.cc +++ b/source/client/process_impl.cc @@ -325,6 +325,7 @@ void ProcessImpl::shutdown() { } tls_.shutdownThread(); dispatcher_->shutdown(); + Envoy::Network::DnsResolverFactory::terminateFactories(); shutdown_ = true; } diff --git a/source/client/service_impl.cc b/source/client/service_impl.cc index 709757d9b..21d9b132f 100644 --- a/source/client/service_impl.cc +++ b/source/client/service_impl.cc @@ -45,6 +45,7 @@ void ServiceImpl::handleExecutionRequest(const nighthawk::client::ExecutionReque response.mutable_error_detail()->set_message( fmt::format("Unable to create ProcessImpl: {}", process_or_status.status().ToString())); writeResponse(response); + Envoy::Network::DnsResolverFactory::terminateFactories(); return; } ProcessPtr process = std::move(*process_or_status);