From: Marcin Siodelski Date: Mon, 24 Jun 2019 15:11:51 +0000 (+0200) Subject: [#689] Include error messages for lease updates in the log. X-Git-Tag: Kea-1.6.0-beta2~219 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c793cdb4a213fcc7afe269e347424c45aa585b9d;p=thirdparty%2Fkea.git [#689] Include error messages for lease updates in the log. --- diff --git a/src/hooks/dhcp/high_availability/ha_messages.cc b/src/hooks/dhcp/high_availability/ha_messages.cc index ef5e5661a3..392826ac70 100644 --- a/src/hooks/dhcp/high_availability/ha_messages.cc +++ b/src/hooks/dhcp/high_availability/ha_messages.cc @@ -1,4 +1,4 @@ -// File created from ../../../../src/hooks/dhcp/high_availability/ha_messages.mes on Mon Jun 24 2019 12:19 +// File created from ../../../../src/hooks/dhcp/high_availability/ha_messages.mes on Mon Jun 24 2019 17:05 #include #include @@ -120,8 +120,8 @@ const char* values[] = { "HA_LEASE_UPDATES_DISABLED", "lease updates will not be sent to the partner while in %1 state", "HA_LEASE_UPDATES_ENABLED", "lease updates will be sent to the partner while in %1 state", "HA_LEASE_UPDATE_COMMUNICATIONS_FAILED", "%1: failed to communicate with %2: %3", - "HA_LEASE_UPDATE_CREATE_UPDATE_FAILED_ON_PEER", "%1: failed to create or update the lease having type %2 for address %3 in subnet %4", - "HA_LEASE_UPDATE_DELETE_FAILED_ON_PEER", "%1: failed to delete the lease having type %2 for address %3 in subnet %4", + "HA_LEASE_UPDATE_CREATE_UPDATE_FAILED_ON_PEER", "%1: failed to create or update the lease having type %2 for address %3, reason: %4", + "HA_LEASE_UPDATE_DELETE_FAILED_ON_PEER", "%1: failed to delete the lease having type %2 for address %3, reason: %4", "HA_LEASE_UPDATE_FAILED", "%1: lease update to %2 failed: %3", "HA_LOAD_BALANCING_DUID_MISSING", "load balancing failed for the DHCPv6 message (transaction id: %1) because DUID is missing", "HA_LOAD_BALANCING_IDENTIFIER_MISSING", "load balancing failed for the DHCPv4 message (transaction id: %1) because HW address and client identifier are missing", diff --git a/src/hooks/dhcp/high_availability/ha_messages.h b/src/hooks/dhcp/high_availability/ha_messages.h index 0aa8d7104e..631290b1b3 100644 --- a/src/hooks/dhcp/high_availability/ha_messages.h +++ b/src/hooks/dhcp/high_availability/ha_messages.h @@ -1,4 +1,4 @@ -// File created from ../../../../src/hooks/dhcp/high_availability/ha_messages.mes on Mon Jun 24 2019 12:19 +// File created from ../../../../src/hooks/dhcp/high_availability/ha_messages.mes on Mon Jun 24 2019 17:05 #ifndef HA_MESSAGES_H #define HA_MESSAGES_H diff --git a/src/hooks/dhcp/high_availability/ha_messages.mes b/src/hooks/dhcp/high_availability/ha_messages.mes index aaacf9b2fe..85ba97bea4 100644 --- a/src/hooks/dhcp/high_availability/ha_messages.mes +++ b/src/hooks/dhcp/high_availability/ha_messages.mes @@ -262,12 +262,12 @@ This warning message indicates that there was a problem in communication with a HA peer while processing a DHCP client query and sending lease update. The client's DHCP message will be dropped. -% HA_LEASE_UPDATE_DELETE_FAILED_ON_PEER %1: failed to delete the lease having type %2 for address %3 in subnet %4 +% HA_LEASE_UPDATE_DELETE_FAILED_ON_PEER %1: failed to delete the lease having type %2 for address %3, reason: %4 This informational message is issued when one of the leases failed to delete on the HA peer while processing lease updates sent from this server. Typically, the lease fails to delete when it doesn't exist in the peer's database. -% HA_LEASE_UPDATE_CREATE_UPDATE_FAILED_ON_PEER %1: failed to create or update the lease having type %2 for address %3 in subnet %4 +% HA_LEASE_UPDATE_CREATE_UPDATE_FAILED_ON_PEER %1: failed to create or update the lease having type %2 for address %3, reason: %4 This informational message is issued when one of the leases failed to be created or updated on the HA peer whilw processing the lease updates sent from this server. This may indicate an issue with communication between diff --git a/src/hooks/dhcp/high_availability/ha_service.cc b/src/hooks/dhcp/high_availability/ha_service.cc index 8514fc48d6..1abf3e4f14 100644 --- a/src/hooks/dhcp/high_availability/ha_service.cc +++ b/src/hooks/dhcp/high_availability/ha_service.cc @@ -916,28 +916,24 @@ HAService::logFailedLeaseUpdates(const PktPtr& query, for (int i = 0; i < failed_leases->size(); ++i) { auto lease = failed_leases->get(i); if (lease->getType() == Element::map) { - // subnet-id - auto subnet_id = lease->get("subnet-id"); - std::ostringstream subnet_id_text; - if (subnet_id && subnet_id->getType() == Element::integer) { - subnet_id_text << subnet_id->intValue(); - - } else { - subnet_id_text << "(unknown)"; - } // ip-address auto ip_address = lease->get("ip-address"); + // lease type auto lease_type = lease->get("type"); + // error-message + auto error_message = lease->get("error-message"); + LOG_INFO(ha_logger, mesid) .arg(query->getLabel()) .arg(lease_type && (lease_type->getType() == Element::string) ? lease_type->stringValue() : "(uknown)") .arg(ip_address && (ip_address->getType() == Element::string) ? ip_address->stringValue() : "(unknown)") - .arg(subnet_id_text.str()); + .arg(error_message && (error_message->getType() == Element::string) ? + error_message->stringValue() : "(unknown)"); } } } diff --git a/src/hooks/dhcp/high_availability/tests/ha_service_unittest.cc b/src/hooks/dhcp/high_availability/tests/ha_service_unittest.cc index 55df42f5fc..9a228acab6 100644 --- a/src/hooks/dhcp/high_availability/tests/ha_service_unittest.cc +++ b/src/hooks/dhcp/high_availability/tests/ha_service_unittest.cc @@ -1498,12 +1498,16 @@ TEST_F(HAServiceTest, sendUpdatesFailedLeases6) { failed_deleted_lease->set("type", Element::create("IA_NA")); failed_deleted_lease->set("ip-address", Element::create("2001:db8:1::1")); failed_deleted_lease->set("subnet-id", Element::create(1)); + failed_deleted_lease->set("result", Element::create(CONTROL_RESULT_EMPTY)); + failed_deleted_lease->set("error-message", Element::create("no lease found")); // Crate a dummy lease which failed to be created. auto failed_lease = Element::createMap(); failed_lease->set("type", Element::create("IA_PD")); failed_lease->set("ip-address", Element::create("2001:db8:1::")); failed_lease->set("subnet-id", Element::create(2)); + failed_lease->set("result", Element::create(CONTROL_RESULT_ERROR)); + failed_lease->set("error-message", Element::create("failed to create lease")); // Create the "failed-deleted-leases" list. auto failed_deleted_leases = Element::createList();