aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/tensorboard
diff options
context:
space:
mode:
authorGravatar Justine Tunney <jart@google.com>2018-01-05 00:46:32 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-01-05 00:50:34 -0800
commitc026e3ffa08555927144e65abd9f681c6098d8c1 (patch)
tree798db3df0268ac8f585e0ab1fca5358a783fed25 /tensorflow/contrib/tensorboard
parent05386f42f18d66bf9ff1d69edf5c47591e60f804 (diff)
Make SQLite veneer better
This iteration does a very good job following the contracts of the actual API. Smart pointers ensure objects are destroyed in the correct order. RAII locking and transactions are now possible, with Clang thread safety analysis. Tuning is now done with environment variables. PiperOrigin-RevId: 180897579
Diffstat (limited to 'tensorflow/contrib/tensorboard')
-rw-r--r--tensorflow/contrib/tensorboard/db/schema.cc13
-rw-r--r--tensorflow/contrib/tensorboard/db/summary_db_writer.cc34
-rw-r--r--tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc8
3 files changed, 29 insertions, 26 deletions
diff --git a/tensorflow/contrib/tensorboard/db/schema.cc b/tensorflow/contrib/tensorboard/db/schema.cc
index 1aff789c3c..0514fceefb 100644
--- a/tensorflow/contrib/tensorboard/db/schema.cc
+++ b/tensorflow/contrib/tensorboard/db/schema.cc
@@ -19,7 +19,8 @@ namespace {
Status Run(Sqlite* db, const char* sql) {
auto stmt = db->Prepare(sql);
- TF_RETURN_WITH_CONTEXT_IF_ERROR(stmt.StepAndReset(), sql);
+ TF_RETURN_IF_ERROR(stmt.status());
+ TF_RETURN_IF_ERROR(stmt.ValueOrDie().StepAndReset());
return Status::OK();
}
@@ -28,11 +29,11 @@ Status Run(Sqlite* db, const char* sql) {
Status SetupTensorboardSqliteDb(Sqlite* db) {
// Note: GCC raw strings macros are broken.
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55971
- db->Prepare(strings::StrCat("PRAGMA application_id=",
- kTensorboardSqliteApplicationId))
- .StepAndReset()
- .IgnoreError();
- db->Prepare("PRAGMA user_version=0").StepAndReset().IgnoreError();
+ TF_RETURN_IF_ERROR(
+ db->PrepareOrDie(strings::StrCat("PRAGMA application_id=",
+ kTensorboardSqliteApplicationId))
+ .StepAndReset());
+ db->PrepareOrDie("PRAGMA user_version=0").StepAndResetOrDie();
Status s;
// Creates Ids table.
diff --git a/tensorflow/contrib/tensorboard/db/summary_db_writer.cc b/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
index fc201be9e4..a9d75e9f04 100644
--- a/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
+++ b/tensorflow/contrib/tensorboard/db/summary_db_writer.cc
@@ -133,7 +133,8 @@ Status CoerceScalar(const Tensor& t, Tensor* out) {
class IdAllocator {
public:
IdAllocator(Env* env, Sqlite* db)
- : env_{env}, inserter_{db->Prepare("INSERT INTO Ids (id) VALUES (?)")} {}
+ : env_{env},
+ inserter_{db->PrepareOrDie("INSERT INTO Ids (id) VALUES (?)")} {}
Status CreateNewId(int64* id) {
Status s;
@@ -208,7 +209,7 @@ class GraphSaver {
}
Status SaveNodeInputs() {
- auto insert = db_->Prepare(R"sql(
+ auto insert = db_->PrepareOrDie(R"sql(
INSERT INTO NodeInputs (graph_id, node_id, idx, input_node_id, is_control)
VALUES (?, ?, ?, ?, ?)
)sql");
@@ -236,7 +237,7 @@ class GraphSaver {
}
Status SaveNodes() {
- auto insert = db_->Prepare(R"sql(
+ auto insert = db_->PrepareOrDie(R"sql(
INSERT INTO Nodes (graph_id, node_id, node_name, op, device, node_def)
VALUES (?, ?, ?, ?, ?, snap(?))
)sql");
@@ -262,7 +263,7 @@ class GraphSaver {
}
Status SaveGraph() {
- auto insert = db_->Prepare(R"sql(
+ auto insert = db_->PrepareOrDie(R"sql(
INSERT INTO Graphs (graph_id, inserted_time, graph_def)
VALUES (?, ?, snap(?))
)sql");
@@ -291,14 +292,14 @@ class RunWriter {
experiment_name_{experiment_name},
run_name_{run_name},
user_name_{user_name},
- insert_tensor_{db_->Prepare(R"sql(
+ insert_tensor_{db_->PrepareOrDie(R"sql(
INSERT OR REPLACE INTO Tensors (tag_id, step, computed_time, tensor)
VALUES (?, ?, ?, snap(?))
)sql")} {}
~RunWriter() {
if (run_id_ == kAbsent) return;
- auto update = db_->Prepare(R"sql(
+ auto update = db_->PrepareOrDie(R"sql(
UPDATE Runs SET finished_time = ? WHERE run_id = ?
)sql");
update.BindDouble(1, GetWallTime(env_));
@@ -331,7 +332,8 @@ class RunWriter {
TF_RETURN_IF_ERROR(
GraphSaver::Save(env_, db_.get(), &id_allocator_, g.get(), &graph_id));
if (run_id_ != kAbsent) {
- auto set = db_->Prepare("UPDATE Runs SET graph_id = ? WHERE run_id = ?");
+ auto set =
+ db_->PrepareOrDie("UPDATE Runs SET graph_id = ? WHERE run_id = ?");
set.BindInt(1, graph_id);
set.BindInt(2, run_id_);
TF_RETURN_IF_ERROR(set.StepAndReset());
@@ -350,14 +352,14 @@ class RunWriter {
TF_RETURN_IF_ERROR(id_allocator_.CreateNewId(tag_id));
tag_ids_[tag_name] = *tag_id;
if (!metadata.summary_description().empty()) {
- SqliteStatement insert_description = db_->Prepare(R"sql(
+ SqliteStatement insert_description = db_->PrepareOrDie(R"sql(
INSERT INTO Descriptions (id, description) VALUES (?, ?)
)sql");
insert_description.BindInt(1, *tag_id);
insert_description.BindText(2, metadata.summary_description());
TF_RETURN_IF_ERROR(insert_description.StepAndReset());
}
- SqliteStatement insert = db_->Prepare(R"sql(
+ SqliteStatement insert = db_->PrepareOrDie(R"sql(
INSERT INTO Tags (
run_id,
tag_id,
@@ -387,7 +389,7 @@ class RunWriter {
private:
Status InitializeUser() {
if (user_id_ != kAbsent || user_name_.empty()) return Status::OK();
- SqliteStatement get = db_->Prepare(R"sql(
+ SqliteStatement get = db_->PrepareOrDie(R"sql(
SELECT user_id FROM Users WHERE user_name = ?
)sql");
get.BindText(1, user_name_);
@@ -398,7 +400,7 @@ class RunWriter {
return Status::OK();
}
TF_RETURN_IF_ERROR(id_allocator_.CreateNewId(&user_id_));
- SqliteStatement insert = db_->Prepare(R"sql(
+ SqliteStatement insert = db_->PrepareOrDie(R"sql(
INSERT INTO Users (user_id, user_name, inserted_time) VALUES (?, ?, ?)
)sql");
insert.BindInt(1, user_id_);
@@ -412,7 +414,7 @@ class RunWriter {
if (experiment_name_.empty()) return Status::OK();
if (experiment_id_ == kAbsent) {
TF_RETURN_IF_ERROR(InitializeUser());
- SqliteStatement get = db_->Prepare(R"sql(
+ SqliteStatement get = db_->PrepareOrDie(R"sql(
SELECT
experiment_id,
started_time
@@ -432,7 +434,7 @@ class RunWriter {
} else {
TF_RETURN_IF_ERROR(id_allocator_.CreateNewId(&experiment_id_));
experiment_started_time_ = computed_time;
- SqliteStatement insert = db_->Prepare(R"sql(
+ SqliteStatement insert = db_->PrepareOrDie(R"sql(
INSERT INTO Experiments (
user_id,
experiment_id,
@@ -451,7 +453,7 @@ class RunWriter {
}
if (computed_time < experiment_started_time_) {
experiment_started_time_ = computed_time;
- SqliteStatement update = db_->Prepare(R"sql(
+ SqliteStatement update = db_->PrepareOrDie(R"sql(
UPDATE Experiments SET started_time = ? WHERE experiment_id = ?
)sql");
update.BindDouble(1, computed_time);
@@ -467,7 +469,7 @@ class RunWriter {
if (run_id_ == kAbsent) {
TF_RETURN_IF_ERROR(id_allocator_.CreateNewId(&run_id_));
run_started_time_ = computed_time;
- SqliteStatement insert = db_->Prepare(R"sql(
+ SqliteStatement insert = db_->PrepareOrDie(R"sql(
INSERT OR REPLACE INTO Runs (
experiment_id,
run_id,
@@ -485,7 +487,7 @@ class RunWriter {
}
if (computed_time < run_started_time_) {
run_started_time_ = computed_time;
- SqliteStatement update = db_->Prepare(R"sql(
+ SqliteStatement update = db_->PrepareOrDie(R"sql(
UPDATE Runs SET started_time = ? WHERE run_id = ?
)sql");
update.BindDouble(1, computed_time);
diff --git a/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc b/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
index 5ea844b668..cfc6192596 100644
--- a/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
+++ b/tensorflow/contrib/tensorboard/db/summary_db_writer_test.cc
@@ -48,7 +48,7 @@ class FakeClockEnv : public EnvWrapper {
class SummaryDbWriterTest : public ::testing::Test {
protected:
- void SetUp() override { db_ = Sqlite::Open(":memory:").ValueOrDie(); }
+ void SetUp() override { db_ = Sqlite::OpenOrDie(":memory:"); }
void TearDown() override {
if (writer_ != nullptr) {
@@ -58,7 +58,7 @@ class SummaryDbWriterTest : public ::testing::Test {
}
int64 QueryInt(const string& sql) {
- SqliteStatement stmt = db_->Prepare(sql);
+ SqliteStatement stmt = db_->PrepareOrDie(sql);
bool is_done;
Status s = stmt.Step(&is_done);
if (!s.ok() || is_done) {
@@ -69,7 +69,7 @@ class SummaryDbWriterTest : public ::testing::Test {
}
double QueryDouble(const string& sql) {
- SqliteStatement stmt = db_->Prepare(sql);
+ SqliteStatement stmt = db_->PrepareOrDie(sql);
bool is_done;
Status s = stmt.Step(&is_done);
if (!s.ok() || is_done) {
@@ -80,7 +80,7 @@ class SummaryDbWriterTest : public ::testing::Test {
}
string QueryString(const string& sql) {
- SqliteStatement stmt = db_->Prepare(sql);
+ SqliteStatement stmt = db_->PrepareOrDie(sql);
bool is_done;
Status s = stmt.Step(&is_done);
if (!s.ok() || is_done) {