From: JINMEI Tatuya Date: Tue, 17 Apr 2012 23:37:28 +0000 (-0700) Subject: [1891] (unrelated) regression fix: make sure multiple updates after rollback. X-Git-Tag: trac2351_base~226^2~116^2~25^2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d7cf5f81d983e95e4f8bd85637a0ae9785d94a9d;p=thirdparty%2Fkea.git [1891] (unrelated) regression fix: make sure multiple updates after rollback. this is a fix to the similar bug as the one fixed in the previous commit, but for the rollback case. --- diff --git a/src/lib/datasrc/sqlite3_accessor.cc b/src/lib/datasrc/sqlite3_accessor.cc index a81a80e868..12955bd337 100644 --- a/src/lib/datasrc/sqlite3_accessor.cc +++ b/src/lib/datasrc/sqlite3_accessor.cc @@ -1104,6 +1104,7 @@ SQLite3Accessor::rollback() { StatementProcessor(*dbparameters_, ROLLBACK, "rollback an SQLite3 transaction").exec(); dbparameters_->in_transaction = false; + dbparameters_->updating_zone = false; dbparameters_->updated_zone_id = -1; } diff --git a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc index c2e8418bd6..8e8e914058 100644 --- a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc +++ b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc @@ -1026,7 +1026,11 @@ TEST_F(SQLite3Update, addThenRollback) { expected_stored.push_back(new_data); checkRecords(*accessor, zone_id, "newdata.example.com.", expected_stored); + // Rollback the transaction, and confirm the zone reverts to the previous + // state. We also start another update to check if the accessor can be + // reused for a new update after rollback. accessor->rollback(); + zone_id = accessor->startUpdateZone("example.com.", false).second; checkRecords(*accessor, zone_id, "newdata.example.com.", empty_stored); }