[svn] commit: r2433 - in /branches/trac232/src: bin/auth/auth_srv.cc lib/datasrc/data_source.cc lib/datasrc/data_source.h lib/datasrc/sqlite3_datasrc.cc lib/datasrc/sqlite3_datasrc.h lib/datasrc/tests/sqlite3_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Jul 8 11:50:10 UTC 2010
Author: jelte
Date: Thu Jul 8 11:50:10 2010
New Revision: 2433
Log:
remove zone name from startTransaction (already provided in creation of transaction object)
Modified:
branches/trac232/src/bin/auth/auth_srv.cc
branches/trac232/src/lib/datasrc/data_source.cc
branches/trac232/src/lib/datasrc/data_source.h
branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
Modified: branches/trac232/src/bin/auth/auth_srv.cc
==============================================================================
--- branches/trac232/src/bin/auth/auth_srv.cc (original)
+++ branches/trac232/src/bin/auth/auth_srv.cc Thu Jul 8 11:50:10 2010
@@ -345,7 +345,7 @@
RdataPtr rdata = createRdata(rrset->getType(), rrset->getClass(), args->get("rr_rdata")->stringValue());
rrset->addRdata(rdata);
DataSrcTransaction transaction(datasource, zone_name);
- DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+ DataSrc::Result r = datasource->startTransaction(transaction);
if (r != DataSrc::SUCCESS) {
return isc::config::createAnswer(r, "error starting transaction");
}
@@ -395,7 +395,7 @@
}
}
DataSrcTransaction transaction(datasource, zone_name);
- DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+ DataSrc::Result r = datasource->startTransaction(transaction);
if (r != DataSrc::SUCCESS) {
return isc::config::createAnswer(r, "error starting transaction");
}
@@ -482,7 +482,7 @@
// hmz can't we assign RRTypes?
if (datasource) {
DataSrcTransaction transaction(datasource, zone_name);
- DataSrc::Result r = datasource->startTransaction(transaction, zone_name);
+ DataSrc::Result r = datasource->startTransaction(transaction);
if (r != DataSrc::SUCCESS) {
return isc::config::createAnswer(r, "error starting transaction");
}
@@ -569,7 +569,7 @@
DataSrc* datasource = (DataSrc*) match.bestDataSrc();
if (datasource) {
DataSrcTransaction transaction(datasource, zone_name);
- DataSrc::Result result = datasource->startTransaction(transaction, zone_name);
+ DataSrc::Result result = datasource->startTransaction(transaction);
if (result != DataSrc::SUCCESS) {
return isc::config::createAnswer(result, "error starting transaction");
}
Modified: branches/trac232/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.cc (original)
+++ branches/trac232/src/lib/datasrc/data_source.cc Thu Jul 8 11:50:10 2010
@@ -917,7 +917,7 @@
}
DataSrc::Result
-DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM, const Name& zonename UNUSED_PARAM)
+DataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
return NOT_IMPLEMENTED;
}
@@ -1035,7 +1035,7 @@
}
DataSrc::Result
-MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM, const Name& zonename UNUSED_PARAM)
+MetaDataSrc::startTransaction(DataSrcTransaction& transaction UNUSED_PARAM)
{
return NOT_IMPLEMENTED;
}
Modified: branches/trac232/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.h (original)
+++ branches/trac232/src/lib/datasrc/data_source.h Thu Jul 8 11:50:10 2010
@@ -163,10 +163,9 @@
};
// subclass this if you need specific data in your transaction model
-// TODO: probably needs private constructor, so that only startTransaction can make them
-// also probably should keep a pointer to a datasource
-// should this also provide the outwards interface?
-//
+// TODO: should this also provide the outwards interface?
+// seems better to leave this as a pure data-holding class,
+// with only setters and getters
//class DataSrcTransaction {
//public:
@@ -187,6 +186,7 @@
void setState(states state) { _state = state; };
isc::data::ElementPtr getData() { return _data; };
void setData(isc::data::ElementPtr data) { _data = data; };
+ const isc::dns::Name getZoneName() { return _zone_name; };
private:
isc::data::ElementPtr _data;
@@ -271,7 +271,7 @@
virtual Result delZone(DataSrcTransaction& transaction);
virtual Result replaceZone(DataSrcTransaction& transaction,
isc::dns::RRsetList& rrsets);
- virtual Result startTransaction(DataSrcTransaction& transaction, const isc::dns::Name& zonename);
+ virtual Result startTransaction(DataSrcTransaction& transaction);
virtual Result commitTransaction(DataSrcTransaction& transaction);
virtual Result rollbackTransaction(DataSrcTransaction& transaction);
virtual Result doIXFR(DataSrcTransaction& transaction,
@@ -351,7 +351,7 @@
// Writable data sources
//
// see comments at DataSrc
- virtual Result startTransaction(DataSrcTransaction& transaction, const isc::dns::Name& zonename);
+ virtual Result startTransaction(DataSrcTransaction& transaction);
virtual Result commitTransaction(DataSrcTransaction& transaction);
virtual Result rollbackTransaction(DataSrcTransaction& transaction);
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc Thu Jul 8 11:50:10 2010
@@ -779,15 +779,19 @@
}
DataSrc::Result
-Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction, const Name& zonename)
+Sqlite3DataSrc::startTransaction(DataSrcTransaction& transaction)
{
if (transaction.getState() != DataSrcTransaction::INIT) {
return DataSrc::ERROR;
}
int result = sqlite3_exec(dbparameters->db_, w_start_transaction_str, NULL, NULL, NULL);
if (result == SQLITE_OK) {
+ int zone_id = hasExactZone(transaction.getZoneName().toText().c_str());
+ if (zone_id <= 0) {
+ return DataSrc::ERROR;
+ }
isc::data::ElementPtr trans_data = isc::data::Element::createFromString("{}");
- trans_data->set("zone_id", isc::data::Element::create(hasExactZone(zonename.toText().c_str())));
+ trans_data->set("zone_id", isc::data::Element::create(zone_id));
transaction.setData(trans_data);
transaction.setState(DataSrcTransaction::RUNNING);
return DataSrc::SUCCESS;
Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.h (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.h Thu Jul 8 11:50:10 2010
@@ -110,7 +110,7 @@
// hmz, should we have a transaction context object? (see comments
// in datasource.h
- Result startTransaction(DataSrcTransaction& transaction, const isc::dns::Name& zonename);
+ Result startTransaction(DataSrcTransaction& transaction);
Result commitTransaction(DataSrcTransaction& transaction);
Result rollbackTransaction(DataSrcTransaction& transaction);
Modified: branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc (original)
+++ branches/trac232/src/lib/datasrc/tests/sqlite3_unittest.cc Thu Jul 8 11:50:10 2010
@@ -992,10 +992,10 @@
// need rrsetit for doIXFR (but doIXFR should probably be moved up to datasource itself)
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.startTransaction(transaction, zone_name));
+ data_source.startTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::RUNNING, transaction.getState());
EXPECT_EQ(DataSrc::ERROR,
- data_source.startTransaction(transaction, zone_name));
+ data_source.startTransaction(transaction));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.rollbackTransaction(transaction));
EXPECT_EQ(DataSrcTransaction::DONE, transaction.getState());
@@ -1030,7 +1030,7 @@
// add it, but roll back
DataSrcTransaction transaction1(&data_source, zone_name);
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.startTransaction(transaction1, zone_name));
+ data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.addRRset(transaction1, new_rrset));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1045,7 +1045,7 @@
// add it with commit
DataSrcTransaction transaction2(&data_source, zone_name);
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.startTransaction(transaction2, zone_name));
+ data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.addRRset(transaction2, new_rrset));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1075,7 +1075,7 @@
// add it, but roll back
DataSrcTransaction transaction1(&data_source, zone_name);
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.startTransaction(transaction1, zone_name));
+ data_source.startTransaction(transaction1));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.delRRset(transaction1, new_rrset));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1091,7 +1091,7 @@
// add it, and commit
DataSrcTransaction transaction2(&data_source, zone_name);
EXPECT_EQ(DataSrc::SUCCESS,
- data_source.startTransaction(transaction2, zone_name));
+ data_source.startTransaction(transaction2));
EXPECT_EQ(DataSrc::SUCCESS,
data_source.delRRset(transaction2, new_rrset));
EXPECT_EQ(DataSrc::SUCCESS,
@@ -1123,7 +1123,7 @@
// Replace them, roll back
DataSrcTransaction transaction1(&data_source, zone_name);
- data_source.startTransaction(transaction1, zone_name);
+ data_source.startTransaction(transaction1);
data_source.replaceZone(transaction1, new_list);
data_source.rollbackTransaction(transaction1);
@@ -1136,7 +1136,7 @@
// Replace them, commit
DataSrcTransaction transaction2(&data_source, zone_name);
- data_source.startTransaction(transaction2, zone_name);
+ data_source.startTransaction(transaction2);
data_source.replaceZone(transaction2, new_list);
data_source.commitTransaction(transaction2);
@@ -1166,7 +1166,7 @@
// Delete zone, roll back
DataSrcTransaction transaction1(&data_source, zone_name);
- data_source.startTransaction(transaction1, zone_name);
+ data_source.startTransaction(transaction1);
data_source.delZone(transaction1);
data_source.rollbackTransaction(transaction1);
@@ -1179,7 +1179,7 @@
// Delete zone, commit
DataSrcTransaction transaction2(&data_source, zone_name);
- data_source.startTransaction(transaction2, zone_name);
+ data_source.startTransaction(transaction2);
data_source.delZone(transaction2);
data_source.commitTransaction(transaction2);
@@ -1189,6 +1189,11 @@
result_sets, find_flags, &zone_name));
EXPECT_EQ(DataSrc::NO_SUCH_ZONE, find_flags);
EXPECT_EQ(1, result_sets.size());
+
+ // try to start a transaction for the zone that is now gone
+ DataSrcTransaction transaction3(&data_source, zone_name);
+ EXPECT_EQ(DataSrc::ERROR, data_source.startTransaction(transaction3));
+
}
// initialize the message with flags and codes,
@@ -1272,7 +1277,7 @@
// do IXFR, roll back
DataSrcTransaction transaction1(&data_source, zone_name);
- data_source.startTransaction(transaction1, zone_name);
+ data_source.startTransaction(transaction1);
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
@@ -1286,7 +1291,7 @@
// do IXFR, commit
DataSrcTransaction transaction2(&data_source, zone_name);
- data_source.startTransaction(transaction2, zone_name);
+ data_source.startTransaction(transaction2);
EXPECT_EQ(DataSrc::SUCCESS,
data_source.doIXFR(transaction2,
ixfr_msg.beginSection(Section::ANSWER()),
@@ -1300,7 +1305,7 @@
// same IXFR should now fail, because the start serial doesn't match
DataSrcTransaction transaction3(&data_source, zone_name);
- data_source.startTransaction(transaction3, zone_name);
+ data_source.startTransaction(transaction3);
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction3,
ixfr_msg.beginSection(Section::ANSWER()),
@@ -1322,7 +1327,7 @@
ASSERT_EQ(0, ixfrFromFile(ixfr_msg, TEST_DATA_DIR
"/ifxr_bad_remove_nonexisting.rrs"));
DataSrcTransaction transaction1(&data_source, zone_name);
- data_source.startTransaction(transaction1, zone_name);
+ data_source.startTransaction(transaction1);
EXPECT_EQ(DataSrc::ERROR,
data_source.doIXFR(transaction1,
ixfr_msg.beginSection(Section::ANSWER()),
More information about the bind10-changes
mailing list