From 6fff5dea63e1833f2883cb8a61edba0582536295 Mon Sep 17 00:00:00 2001
From: Andrew Audibert <aaudibert@google.com>
Date: Fri, 17 Jan 2020 16:56:39 -0800
Subject: [PATCH] Wait for the stats thread to terminate in interleave
 destructor.

PiperOrigin-RevId: 290367959
Change-Id: Ief9fe5a194d87575ceb68057ffd497cf854520c6
---
 .../core/kernels/data/parallel_interleave_dataset_op.cc       | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tensorflow/core/kernels/data/parallel_interleave_dataset_op.cc b/tensorflow/core/kernels/data/parallel_interleave_dataset_op.cc
index 5e4f6567eb0..39fe1ca7425 100644
--- a/tensorflow/core/kernels/data/parallel_interleave_dataset_op.cc
+++ b/tensorflow/core/kernels/data/parallel_interleave_dataset_op.cc
@@ -494,6 +494,7 @@ class ParallelInterleaveDatasetOp::Dataset : public DatasetBase {
         IncrementOutstandingThreads();
         thread_pool_->Schedule([this]() { WorkerManagerThread(); });
         if (ctx_->stats_aggregator()) {
+          IncrementOutstandingThreads();
           thread_pool_->Schedule([this]() { StatsThread(); });
         }
         threads_initialized_ = true;
@@ -983,7 +984,8 @@ class ParallelInterleaveDatasetOp::Dataset : public DatasetBase {
                 l, std::chrono::milliseconds(kStatsReportingPeriodMillis));
           }
           if (cancelled_) {
-            break;
+            DecrementOutstandingThreads();
+            return;
           }
           num_current_active_workers = num_current_active_workers_;
           num_current_workers = num_current_workers_;