diff --git a/google/cloud/bigtable/internal/query_plan.cc b/google/cloud/bigtable/internal/query_plan.cc index fcb1a1904a655..054f08b34cff0 100644 --- a/google/cloud/bigtable/internal/query_plan.cc +++ b/google/cloud/bigtable/internal/query_plan.cc @@ -35,6 +35,10 @@ std::shared_ptr QueryPlan::Create( return plan; } +QueryPlan::~QueryPlan() { + if (refresh_timer_.valid()) refresh_timer_.cancel(); +} + void QueryPlan::Initialize() { std::unique_lock lock(mu_); if (state_ == RefreshState::kDone) ScheduleRefresh(lock); diff --git a/google/cloud/bigtable/internal/query_plan.h b/google/cloud/bigtable/internal/query_plan.h index 9b86882287bd2..f9a6fb418cdcd 100644 --- a/google/cloud/bigtable/internal/query_plan.h +++ b/google/cloud/bigtable/internal/query_plan.h @@ -43,6 +43,8 @@ class QueryPlan : public std::enable_shared_from_this { StatusOr response, RefreshFn fn, std::shared_ptr clock = std::make_shared()); + ~QueryPlan(); + // Invalidates the current QueryPlan and triggers a refresh. void Invalidate(Status status, std::string const& invalid_query_plan_id);