aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/tensorboard
diff options
context:
space:
mode:
authorGravatar Justine Tunney <jart@google.com>2018-01-09 19:30:14 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-01-09 19:33:57 -0800
commit8401747ca8e940c580d6ce6b16c8a0a7da9e4e15 (patch)
tree9a1e15dcc39710335557dfc05729a37e2cc953a7 /tensorflow/contrib/tensorboard
parent013a6c7b3112573ba4d932c8a22bfaf45f648c77 (diff)
Remove smart pointers from SQLite veneer
Sqlite now extends tensorflow::core::RefCounted which is a better practice for code in the TensorFlow codebase. A few other trivial changes were snuck in. There's now a db->changes() method. Error messages will also display the SQLite extended result code, which can be looked up by hand with some difficulty, just in case the error message string doesn't reflect the whole nuance of something like an i/o error. PiperOrigin-RevId: 181410358
Diffstat (limited to 'tensorflow/contrib/tensorboard')
-rw-r--r--tensorflow/contrib/tensorboard/db/schema.cc8
-rw-r--r--tensorflow/contrib/tensorboard/db/schema.h2
-rw-r--r--tensorflow/contrib/tensorboard/db/schema_test.cc6
-rw-r--r--tensorflow/contrib/tensorboard/db/summary_db_writer.cc52
-rw-r--r--tensorflow/contrib/tensorboard/db/summary_db_writer.h5
-rw-r--r--tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc8
6 files changed, 45 insertions, 36 deletions
diff --git a/tensorflow/contrib/tensorboard/db/schema.cc b/tensorflow/contrib/tensorboard/db/schema.cc
index 0514fceefb..2cd00876f8 100644
--- a/tensorflow/contrib/tensorboard/db/schema.cc
+++ b/tensorflow/contrib/tensorboard/db/schema.cc
@@ -14,13 +14,15 @@ limitations under the License.
==============================================================================*/
#include "tensorflow/contrib/tensorboard/db/schema.h"
+#include "tensorflow/core/lib/core/errors.h"
+
namespace tensorflow {
namespace {
Status Run(Sqlite* db, const char* sql) {
- auto stmt = db->Prepare(sql);
- TF_RETURN_IF_ERROR(stmt.status());
- TF_RETURN_IF_ERROR(stmt.ValueOrDie().StepAndReset());
+ SqliteStatement stmt;
+ TF_RETURN_IF_ERROR(db->Prepare(sql, &stmt));
+ TF_RETURN_IF_ERROR(stmt.StepAndReset());
return Status::OK();
}
diff --git a/tensorflow/contrib/tensorboard/db/schema.h b/tensorflow/contrib/tensorboard/db/schema.h
index dc72b63610..3da4504225 100644
--- a/tensorflow/contrib/tensorboard/db/schema.h
+++ b/tensorflow/contrib/tensorboard/db/schema.h
@@ -15,8 +15,6 @@ limitations under the License.
#ifndef TENSORFLOW_CONTRIB_TENSORBOARD_DB_SCHEMA_H_
#define TENSORFLOW_CONTRIB_TENSORBOARD_DB_SCHEMA_H_
-#include <memory>
-
#include "tensorflow/core/lib/core/status.h"
#include "tensorflow/core/lib/db/sqlite.h"
diff --git a/tensorflow/contrib/tensorboard/db/schema_test.cc b/tensorflow/contrib/tensorboard/db/schema_test.cc
index 7230d874db..4d3f2880bd 100644
--- a/tensorflow/contrib/tensorboard/db/schema_test.cc
+++ b/tensorflow/contrib/tensorboard/db/schema_test.cc
@@ -23,8 +23,10 @@ namespace tensorflow {
namespace {
TEST(SchemaTest, SmokeTestTensorboardSchema) {
- auto db = Sqlite::Open(":memory:").ValueOrDie();
- TF_ASSERT_OK(SetupTensorboardSqliteDb(db.get()));
+ Sqlite* db;
+ TF_ASSERT_OK(Sqlite::Open(":memory:", SQLITE_OPEN_READWRITE, &db));
+ core::ScopedUnref unref_db(db);
+ TF_ASSERT_OK(SetupTensorboardSqliteDb(db));
}
} // namespace
diff --git a/tensorflow/contrib/tensorboard/db/summary_db_writer.cc b/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
index a9d75e9f04..44887930c1 100644
--- a/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
+++ b/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
@@ -284,31 +284,35 @@ class GraphSaver {
class RunWriter {
public:
- RunWriter(Env* env, std::shared_ptr<Sqlite> db, const string& experiment_name,
+ RunWriter(Env* env, Sqlite* db, const string& experiment_name,
const string& run_name, const string& user_name)
: env_{env},
- db_{std::move(db)},
- id_allocator_{env_, db_.get()},
+ db_{db},
+ id_allocator_{env_, db_},
experiment_name_{experiment_name},
run_name_{run_name},
user_name_{user_name},
insert_tensor_{db_->PrepareOrDie(R"sql(
INSERT OR REPLACE INTO Tensors (tag_id, step, computed_time, tensor)
VALUES (?, ?, ?, snap(?))
- )sql")} {}
+ )sql")} {
+ db_->Ref();
+ }
~RunWriter() {
- if (run_id_ == kAbsent) return;
- auto update = db_->PrepareOrDie(R"sql(
- UPDATE Runs SET finished_time = ? WHERE run_id = ?
- )sql");
- update.BindDouble(1, GetWallTime(env_));
- update.BindInt(2, run_id_);
- Status s = update.StepAndReset();
- if (!s.ok()) {
- LOG(ERROR) << "Failed to set Runs[" << run_id_
- << "].finish_time: " << s.ToString();
+ if (run_id_ != kAbsent) {
+ auto update = db_->PrepareOrDie(R"sql(
+ UPDATE Runs SET finished_time = ? WHERE run_id = ?
+ )sql");
+ update.BindDouble(1, GetWallTime(env_));
+ update.BindInt(2, run_id_);
+ Status s = update.StepAndReset();
+ if (!s.ok()) {
+ LOG(ERROR) << "Failed to set Runs[" << run_id_
+ << "].finish_time: " << s.ToString();
+ }
}
+ db_->Unref();
}
Status InsertTensor(int64 tag_id, int64 step, double computed_time,
@@ -330,7 +334,7 @@ class RunWriter {
TF_RETURN_IF_ERROR(InitializeRun(computed_time));
int64 graph_id;
TF_RETURN_IF_ERROR(
- GraphSaver::Save(env_, db_.get(), &id_allocator_, g.get(), &graph_id));
+ GraphSaver::Save(env_, db_, &id_allocator_, g.get(), &graph_id));
if (run_id_ != kAbsent) {
auto set =
db_->PrepareOrDie("UPDATE Runs SET graph_id = ? WHERE run_id = ?");
@@ -498,7 +502,7 @@ class RunWriter {
}
Env* env_;
- std::shared_ptr<Sqlite> db_;
+ Sqlite* db_;
IdAllocator id_allocator_;
const string experiment_name_;
const string run_name_;
@@ -514,12 +518,11 @@ class RunWriter {
class SummaryDbWriter : public SummaryWriterInterface {
public:
- SummaryDbWriter(Env* env, std::shared_ptr<Sqlite> db,
+ SummaryDbWriter(Env* env, Sqlite* db,
const string& experiment_name, const string& run_name,
const string& user_name)
- : SummaryWriterInterface(),
- env_{env},
- run_writer_{env, std::move(db), experiment_name, run_name, user_name} {}
+ : env_{env},
+ run_writer_{env, db, experiment_name, run_name, user_name} {}
~SummaryDbWriter() override {}
Status Flush() override { return Status::OK(); }
@@ -621,13 +624,12 @@ class SummaryDbWriter : public SummaryWriterInterface {
} // namespace
-Status CreateSummaryDbWriter(std::shared_ptr<Sqlite> db,
- const string& experiment_name,
+Status CreateSummaryDbWriter(Sqlite* db, const string& experiment_name,
const string& run_name, const string& user_name,
Env* env, SummaryWriterInterface** result) {
- TF_RETURN_IF_ERROR(SetupTensorboardSqliteDb(db.get()));
- *result = new SummaryDbWriter(env, std::move(db), experiment_name, run_name,
- user_name);
+ *result = nullptr;
+ TF_RETURN_IF_ERROR(SetupTensorboardSqliteDb(db));
+ *result = new SummaryDbWriter(env, db, experiment_name, run_name, user_name);
return Status::OK();
}
diff --git a/tensorflow/contrib/tensorboard/db/summary_db_writer.h b/tensorflow/contrib/tensorboard/db/summary_db_writer.h
index 74f61e50b7..5a3de195de 100644
--- a/tensorflow/contrib/tensorboard/db/summary_db_writer.h
+++ b/tensorflow/contrib/tensorboard/db/summary_db_writer.h
@@ -32,8 +32,9 @@ namespace tensorflow {
///
/// Please note that the type signature of this function may change in
/// the future if support for other DBs is added to core.
-Status CreateSummaryDbWriter(std::shared_ptr<Sqlite> db,
- const string& experiment_name,
+///
+/// The result holds a new reference to db.
+Status CreateSummaryDbWriter(Sqlite* db, const string& experiment_name,
const string& run_name, const string& user_name,
Env* env, SummaryWriterInterface** result);
diff --git a/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc b/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
index cfc6192596..68444c35be 100644
--- a/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
+++ b/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
@@ -48,13 +48,17 @@ class FakeClockEnv : public EnvWrapper {
class SummaryDbWriterTest : public ::testing::Test {
protected:
- void SetUp() override { db_ = Sqlite::OpenOrDie(":memory:"); }
+ void SetUp() override {
+ TF_ASSERT_OK(Sqlite::Open(":memory:", SQLITE_OPEN_READWRITE, &db_));
+ }
void TearDown() override {
if (writer_ != nullptr) {
writer_->Unref();
writer_ = nullptr;
}
+ db_->Unref();
+ db_ = nullptr;
}
int64 QueryInt(const string& sql) {
@@ -91,7 +95,7 @@ class SummaryDbWriterTest : public ::testing::Test {
}
FakeClockEnv env_;
- std::shared_ptr<Sqlite> db_;
+ Sqlite* db_ = nullptr;
SummaryWriterInterface* writer_ = nullptr;
};