@@ -201,8 +201,6 @@ class SnapshotDatasetV2Op::Dataset::Iterator::Reader
201201
202202 explicit Reader (const Params& params, int64 start_index);
203203
204- ~Reader () override ;
205-
206204 Status Initialize (IteratorContext* ctx) override ;
207205
208206 Status GetNextInternal (IteratorContext* ctx, std::vector<Tensor>* out_tensors,
@@ -222,7 +220,7 @@ class SnapshotDatasetV2Op::Dataset::Iterator::Reader
222220
223221 std::unique_ptr<IteratorBase> input_impl_ TF_GUARDED_BY (mu_);
224222
225- DatasetBase* input_ TF_GUARDED_BY (mu_);
223+ DatasetBase* input_ TF_GUARDED_BY (mu_) = nullptr ;
226224
227225 std::unique_ptr<InstantiatedCapturedFunction> instantiated_reader_func_
228226 TF_GUARDED_BY (mu_);
@@ -468,7 +466,11 @@ Status SnapshotDatasetV2Op::Dataset::Iterator::GetNextInternal(
468466 bool * end_of_sequence) {
469467 mutex_lock l (mu_);
470468 if (iterator_ == nullptr ) {
471- TF_RETURN_IF_ERROR (InitializeIterator (ctx, nullptr ));
469+ Status s = InitializeIterator (ctx, nullptr );
470+ if (!s.ok ()) {
471+ iterator_.reset ();
472+ return s;
473+ }
472474 }
473475 index_++;
474476 return iterator_->GetNext (ctx, out_tensors, end_of_sequence);
@@ -547,8 +549,6 @@ SnapshotDatasetV2Op::Dataset::Iterator::Reader::Reader(const Params& params,
547549 int64 start_index)
548550 : DatasetIterator<Dataset>(params), start_index_(start_index) {}
549551
550- SnapshotDatasetV2Op::Dataset::Iterator::Reader::~Reader () { input_->Unref (); }
551-
552552Status SnapshotDatasetV2Op::Dataset::Iterator::Reader::Initialize (
553553 IteratorContext* ctx) {
554554 mutex_lock l (mu_);
@@ -597,10 +597,6 @@ Status SnapshotDatasetV2Op::Dataset::Iterator::Reader::Initialize(
597597 }
598598 TF_RETURN_IF_ERROR (GetDatasetFromVariantTensor (reader_output[0 ], &input_));
599599
600- // We need to take a reference here as we will use the input_ and
601- // its iterator.
602- input_->Ref ();
603-
604600 return input_->MakeIterator (ctx, this , prefix (), &input_impl_);
605601}
606602
0 commit comments