diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2018-08-16 12:48:39 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-08-16 12:53:10 -0700 |
commit | 19cafed2ae69ce5cbc4d2b2fc9176fb4c550040f (patch) | |
tree | fa3058b5372012d82c3c5454b9152bed8d3d4030 /tensorflow/python/lib | |
parent | 04ec80842dd8c4dc7c3f1c2737ed8f9ce7444677 (diff) |
Add out_status to py_record_writer.write
Throw in TFRecordWriter.write() if write fails
PiperOrigin-RevId: 209030158
Diffstat (limited to 'tensorflow/python/lib')
-rw-r--r-- | tensorflow/python/lib/io/py_record_writer.cc | 13 | ||||
-rw-r--r-- | tensorflow/python/lib/io/py_record_writer.h | 2 | ||||
-rw-r--r-- | tensorflow/python/lib/io/tf_record.py | 4 | ||||
-rw-r--r-- | tensorflow/python/lib/io/tf_record_test.py | 6 |
4 files changed, 16 insertions, 9 deletions
diff --git a/tensorflow/python/lib/io/py_record_writer.cc b/tensorflow/python/lib/io/py_record_writer.cc index 3c64813735..e4e5268b0f 100644 --- a/tensorflow/python/lib/io/py_record_writer.cc +++ b/tensorflow/python/lib/io/py_record_writer.cc @@ -52,10 +52,17 @@ PyRecordWriter::~PyRecordWriter() { file_.reset(); } -bool PyRecordWriter::WriteRecord(tensorflow::StringPiece record) { - if (writer_ == nullptr) return false; +void PyRecordWriter::WriteRecord(tensorflow::StringPiece record, + TF_Status* out_status) { + if (writer_ == nullptr) { + TF_SetStatus(out_status, TF_FAILED_PRECONDITION, + "Writer not initialized or previously closed"); + return; + } Status s = writer_->WriteRecord(record); - return s.ok(); + if (!s.ok()) { + Set_TF_Status_from_Status(out_status, s); + } } void PyRecordWriter::Flush(TF_Status* out_status) { diff --git a/tensorflow/python/lib/io/py_record_writer.h b/tensorflow/python/lib/io/py_record_writer.h index 9d66c031d4..61a4960ee6 100644 --- a/tensorflow/python/lib/io/py_record_writer.h +++ b/tensorflow/python/lib/io/py_record_writer.h @@ -43,7 +43,7 @@ class PyRecordWriter { TF_Status* out_status); ~PyRecordWriter(); - bool WriteRecord(tensorflow::StringPiece record); + void WriteRecord(tensorflow::StringPiece record, TF_Status* out_status); void Flush(TF_Status* out_status); void Close(TF_Status* out_status); diff --git a/tensorflow/python/lib/io/tf_record.py b/tensorflow/python/lib/io/tf_record.py index 941d6cd67c..2b3e986f6b 100644 --- a/tensorflow/python/lib/io/tf_record.py +++ b/tensorflow/python/lib/io/tf_record.py @@ -125,8 +125,8 @@ class TFRecordWriter(object): Args: record: str """ - # TODO(sethtroisi): Failures are currently swallowed, change that. - self._writer.WriteRecord(record) + with errors.raise_exception_on_not_ok_status() as status: + self._writer.WriteRecord(record, status) def flush(self): """Flush the file.""" diff --git a/tensorflow/python/lib/io/tf_record_test.py b/tensorflow/python/lib/io/tf_record_test.py index 4743c037ec..b853b64ae4 100644 --- a/tensorflow/python/lib/io/tf_record_test.py +++ b/tensorflow/python/lib/io/tf_record_test.py @@ -358,12 +358,12 @@ class TFRecordWriterCloseAndFlushTests(test.TestCase): with self.assertRaises(errors_impl.FailedPreconditionError): self._writer.flush() - def testWriteAfterClose(self): + def testWriteAfterCloseIsError(self): self._writer.write(self._Record(0)) self._writer.close() - # TODO(sethtroisi): No way to know this failed, changed that. - self._writer.write(self._Record(1)) + with self.assertRaises(errors_impl.FailedPreconditionError): + self._writer.write(self._Record(1)) class TFRecordWriterCloseAndFlushGzipTests(TFRecordWriterCloseAndFlushTests): |