Fix a segmentation fault caused by invalid log directory in InternalFlush().
PiperOrigin-RevId: 168557063
This commit is contained in:
parent
009285c09f
commit
b00b6d23c8
@ -24,6 +24,7 @@ from tensorflow.contrib.summary import summary_ops
|
||||
from tensorflow.core.util import event_pb2
|
||||
from tensorflow.python.eager import function
|
||||
from tensorflow.python.eager import test
|
||||
from tensorflow.python.framework import errors
|
||||
from tensorflow.python.framework import test_util
|
||||
from tensorflow.python.lib.io import tf_record
|
||||
from tensorflow.python.platform import gfile
|
||||
@ -32,6 +33,12 @@ from tensorflow.python.training import training_util
|
||||
|
||||
class TargetTest(test_util.TensorFlowTestCase):
|
||||
|
||||
def testInvalidDirectory(self):
|
||||
logdir = '/tmp/apath/that/doesnt/exist'
|
||||
self.assertFalse(gfile.Exists(logdir))
|
||||
with self.assertRaises(errors.NotFoundError):
|
||||
summary_ops.create_summary_file_writer(logdir, max_queue=0, name='t0')
|
||||
|
||||
def testShouldRecordSummary(self):
|
||||
self.assertFalse(summary_ops.should_record_summaries().numpy())
|
||||
summary_ops.always_record_summaries()
|
||||
|
@ -212,6 +212,7 @@ class SummaryWriterImpl : public SummaryWriterInterface {
|
||||
public:
|
||||
SummaryWriterImpl(int max_queue, int flush_millis)
|
||||
: SummaryWriterInterface(),
|
||||
is_initialized_(false),
|
||||
max_queue_(max_queue),
|
||||
flush_millis_(flush_millis) {}
|
||||
|
||||
@ -231,11 +232,15 @@ class SummaryWriterImpl : public SummaryWriterInterface {
|
||||
return errors::Unknown("Could not initialize events writer.");
|
||||
}
|
||||
last_flush_ = Env::Default()->NowMicros();
|
||||
is_initialized_ = true;
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status Flush() override {
|
||||
mutex_lock ml(mu_);
|
||||
if (!is_initialized_) {
|
||||
return errors::FailedPrecondition("Class was not properly initialized.");
|
||||
}
|
||||
return InternalFlush();
|
||||
}
|
||||
|
||||
@ -403,6 +408,7 @@ class SummaryWriterImpl : public SummaryWriterInterface {
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
bool is_initialized_;
|
||||
const int max_queue_;
|
||||
const int flush_millis_;
|
||||
uint64 last_flush_;
|
||||
|
Loading…
Reference in New Issue
Block a user