]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2869] Checkpoint: made buildExtendedInfoTables6 memfile only
authorFrancis Dupont <fdupont@isc.org>
Wed, 24 May 2023 08:56:38 +0000 (10:56 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 6 Jul 2023 20:11:32 +0000 (22:11 +0200)
src/lib/dhcpsrv/dhcpsrv_messages.cc
src/lib/dhcpsrv/dhcpsrv_messages.mes
src/lib/dhcpsrv/memfile_lease_mgr.cc
src/lib/dhcpsrv/memfile_lease_mgr.h
src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc

index 07df920a27f891614df10505159709137b70b97b..46cfcd48085321d3ff950f13519c9dc66fdcdc5f 100644 (file)
@@ -363,10 +363,10 @@ const char* values[] = {
     "DHCPSRV_LEASE_SANITY_FIXED", "The lease %1 with subnet-id %2 failed subnet-id checks, but was corrected to subnet-id %3.",
     "DHCPSRV_MEMFILE_ADD_ADDR4", "adding IPv4 lease with address %1",
     "DHCPSRV_MEMFILE_ADD_ADDR6", "adding IPv6 lease with address %1",
-    "DHCPSRV_MEMFILE_BEGIN_BUILD_EXTENDED_INFO_TABLES6", "building extended info tables with %1 sanity check level%2, tables %3",
+    "DHCPSRV_MEMFILE_BEGIN_BUILD_EXTENDED_INFO_TABLES6", "building extended info tables with %1 sanity check level, tables %2",
     "DHCPSRV_MEMFILE_BEGIN_EXTRACT_EXTENDED_INFO4", "extract extended info with %1 sanity check level%2",
     "DHCPSRV_MEMFILE_BEGIN_TRANSACTION", "committing to memory file database",
-    "DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6", "building extended info tables saw %1 leases, extended info sanity checks modified %2 / updated %3 leases and %4 leases were entered into tables",
+    "DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6", "building extended info tables saw %1 leases, extended info sanity checks modified %2 leases and %3 leases were entered into tables",
     "DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6_ERROR", "building extended info tables got an exception on the lease for %1: %2",
     "DHCPSRV_MEMFILE_COMMIT", "committing to memory file database",
     "DHCPSRV_MEMFILE_CONVERTING_LEASE_FILES", "running LFC now to convert lease files to the current schema: %1.%2",
index f82f8cc7bded4c7f4189fc5324c6423ee5f56058..1382380c214bbb5a82fabf743b14018f90eca191 100644 (file)
@@ -451,10 +451,10 @@ with the specified address to the memory file backend database.
 A debug message issued when the server is about to add an IPv6 lease
 with the specified address to the memory file backend database.
 
-% DHCPSRV_MEMFILE_BEGIN_BUILD_EXTENDED_INFO_TABLES6 building extended info tables with %1 sanity check level%2, tables %3
+% DHCPSRV_MEMFILE_BEGIN_BUILD_EXTENDED_INFO_TABLES6 building extended info tables with %1 sanity check level, tables %2
 A debug message issued when the server is building extended info tables.
-The extended info sanity check level, update in file when requested
-and the fact tables are enabled or disabled are displayed.
+The extended info sanity check level and the fact tables are enabled
+or disabled are displayed.
 
 % DHCPSRV_MEMFILE_BEGIN_EXTRACT_EXTENDED_INFO4 extract extended info with %1 sanity check level%2
 A debug message issued when the server is extracting extended info.
@@ -465,7 +465,7 @@ are displayed.
 The code has issued a begin transaction call. For the memory file database
 this is a no-op.
 
-% DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6 building extended info tables saw %1 leases, extended info sanity checks modified %2 / updated %3 leases and %4 leases were entered into tables
+% DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6 building extended info tables saw %1 leases, extended info sanity checks modified %2 leases and %3 leases were entered into tables
 Extended info tables build was finished. Some statistics are displayed, the
 updated in database is returned to the command interface.
 
index 24bdc170f29498b5b2dcaf0fc0f6238987b311bf..1914cf3e77d42a79fb716c5843a53ef93b95671d 100644 (file)
@@ -997,7 +997,7 @@ Memfile_LeaseMgr::Memfile_LeaseMgr(const DatabaseConnection::ParameterMap& param
                                                  CSVLeaseFile6>(file6,
                                                                 lease_file6_,
                                                                 storage6_);
-            static_cast<void>(buildExtendedInfoTables6Internal(false, false));
+            buildExtendedInfoTables6();
         }
     }
 
@@ -3399,17 +3399,11 @@ Memfile_LeaseMgr::upgradeExtendedInfo4(const LeasePageSize& /* page_size */) {
     return (0);
 }
 
-size_t
-Memfile_LeaseMgr::buildExtendedInfoTables6Internal(bool update, bool current) {
-    CfgConsistencyPtr cfg;
-    if (current) {
-        cfg = CfgMgr::instance().getCurrentCfg()->getConsistency();
-    } else {
-        cfg = CfgMgr::instance().getStagingCfg()->getConsistency();
-    }
+void
+Memfile_LeaseMgr::buildExtendedInfoTables6() {
+    CfgConsistencyPtr cfg = CfgMgr::instance().getStagingCfg()->getConsistency();
     if (!cfg) {
-        isc_throw(Unexpected, "the " << (current ? "current" : "staging")
-                  << " consistency configuration is null");
+        isc_throw(Unexpected, "the staging consistency configuration is null");
     }
     auto check = cfg->getExtendedInfoSanityCheck();
     bool enabled = getExtendedInfoTablesEnabled();
@@ -3417,7 +3411,6 @@ Memfile_LeaseMgr::buildExtendedInfoTables6Internal(bool update, bool current) {
     LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE,
               DHCPSRV_MEMFILE_BEGIN_BUILD_EXTENDED_INFO_TABLES6)
         .arg(CfgConsistency::sanityCheckToText(check))
-        .arg(update ? " updating in file" : "")
         .arg(enabled ? "enabled" : "disabled");
 
     // Clear tables when enabled.
@@ -3428,7 +3421,6 @@ Memfile_LeaseMgr::buildExtendedInfoTables6Internal(bool update, bool current) {
 
     size_t leases = 0;
     size_t modified = 0;
-    size_t updated = 0;
     size_t processed = 0;
 
     for (auto lease : storage6_) {
@@ -3436,10 +3428,6 @@ Memfile_LeaseMgr::buildExtendedInfoTables6Internal(bool update, bool current) {
         try {
             if (upgradeLease6ExtendedInfo(lease, check)) {
                 ++modified;
-                if (update && persistLeases(V6)) {
-                    lease_file6_->append(*lease);
-                    ++updated;
-                }
             }
             if (enabled && addExtendedInfo6(lease)) {
                 ++processed;
@@ -3455,10 +3443,7 @@ Memfile_LeaseMgr::buildExtendedInfoTables6Internal(bool update, bool current) {
     LOG_INFO(dhcpsrv_logger, DHCPSRV_MEMFILE_BUILD_EXTENDED_INFO_TABLES6)
         .arg(leases)
         .arg(modified)
-        .arg(updated)
         .arg(processed);
-
-    return (updated);
 }
 
 size_t
index b83264c85533e23061d55c3e1ba16d868724d39f..d7ae5e20936299d0d99d40a49536a30589a5cc9e 100644 (file)
@@ -1512,15 +1512,6 @@ private:
                              uint8_t link_len,
                              const asiolink::IOAddress& lower_bound_address,
                              const LeasePageSize& page_size);
-
-    /// @brief Build extended info v6 tables.
-    ///
-    /// @param update Update extended info in database.
-    /// @param current specify whether to use current (true) or staging
-    /// (false) config.
-    /// @return The number of updates in the database or 0.
-    size_t buildExtendedInfoTables6Internal(bool update, bool current);
-
 public:
 
     /// @brief Write V4 leases to a file.
@@ -1543,6 +1534,10 @@ protected:
 
     /// Extended information / Bulk Lease Query shared interface.
 
+
+    /// @brief Build extended info v6 tables.
+    void buildExtendedInfoTables6();
+
     /// @brief Delete lease6 extended info from tables.
     ///
     /// @param addr The address of the lease.
index cd6e9162e1dab343d4340556287c11f57e842328..111c2e4e73caa7d2d0bfb4b03466be29f907dd9f 100644 (file)
@@ -100,6 +100,7 @@ public:
     using Memfile_LeaseMgr::setExtendedInfoTablesEnabled;
     using Memfile_LeaseMgr::relay_id6_;
     using Memfile_LeaseMgr::remote_id6_;
+    using Memfile_LeaseMgr::buildExtendedInfoTables6;
 };
 
 /// @brief Test fixture class for @c Memfile_LeaseMgr
@@ -4133,13 +4134,11 @@ TEST_F(MemfileLeaseMgrTest, buildExtendedInfoTables6ExplicitSanitize) {
     EXPECT_FALSE(isc->contains("relay-info"));
 
     // Enable sanitizing.
-    CfgMgr::instance().getCurrentCfg()->getConsistency()->
+    CfgMgr::instance().getStagingCfg()->getConsistency()->
         setExtendedInfoSanityCheck(CfgConsistency::EXTENDED_INFO_CHECK_FIX);
 
-    // Now run buildExtendedInfoTables6 with update set to true.
-    size_t updated = 0;
-    EXPECT_NO_THROW(updated = lease_mgr->buildExtendedInfoTables6(true, true));
-    EXPECT_EQ(2, updated);
+    // Now run buildExtendedInfoTables6.
+    EXPECT_NO_THROW(lease_mgr->buildExtendedInfoTables6());
 
     // Check the lease with empty user context was updated.
     lease = lease_mgr->getLease6(Lease::TYPE_NA, IOAddress("2001:db8:1::1"));
@@ -4156,21 +4155,7 @@ TEST_F(MemfileLeaseMgrTest, buildExtendedInfoTables6ExplicitSanitize) {
     EXPECT_FALSE(isc->contains("relays"));
     EXPECT_TRUE(isc->contains("relay-info"));
 
-    // Check the lease file was updated.
-    string new_content =
-        "2001:db8:1::1,01:01:01:01:01:01:01:01:01:01:01:01:01,"
-        "400,1000,8,100,0,7,128,1,1,,,1,,,,0\n"
-
-        "2001:db8:1::2,02:02:02:02:02:02:02:02:02:02:02:02:02,"
-        "200,200,8,100,0,7,128,1,1,,,1,"
-        "{ \"ISC\": { \"relay-info\": [ { \"hop\": 44&#x2c"
-        " \"link\": \"2001:db8::4\"&#x2c"
-        " \"options\": \"0x00250006010203040506003500086464646464646464\""
-        "&#x2c \"peer\": \"2001:db8::5\"&#x2c"
-        " \"relay-id\": \"6464646464646464\"&#x2c"
-        " \"remote-id\": \"010203040506\" } ] } },,,0\n";
-    string expected = content + new_content;
-    EXPECT_EQ(expected, io.readFile());
+    // The lease file is not more updated.
 }
 
 /// @brief Checks that buildExtendedInfoTables6 can rebuild tables.
@@ -4232,9 +4217,7 @@ TEST_F(MemfileLeaseMgrTest, buildExtendedInfoTables6rebuild) {
     EXPECT_EQ(2, lease_mgr->remote_id6_.size());
 
     // Rebuild the tables.
-    size_t updated = 0;
-    EXPECT_NO_THROW(updated = lease_mgr->buildExtendedInfoTables6(false, false));
-    EXPECT_EQ(0, updated);
+    EXPECT_NO_THROW(lease_mgr->buildExtendedInfoTables6());
 
     // Check tables.
     ASSERT_EQ(1, lease_mgr->relay_id6_.size());