mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-22 09:57:41 +00:00
[#3648] addressed review comments
This commit is contained in:
parent
ae7cddb5d8
commit
12d89b6130
@ -1,3 +1,11 @@
|
|||||||
|
2326. [bug] razvan
|
||||||
|
Fixed a bug which was causing the allocation engine to reject the
|
||||||
|
lease if a data race caused by a different server updating the
|
||||||
|
shared database entries was detected. The entire packet is now
|
||||||
|
dropped in this particular case. This applies to both kea-dhp4
|
||||||
|
and kea-dhcp6 servers.
|
||||||
|
(Gitlab #3648)
|
||||||
|
|
||||||
2325. [bug] razvan
|
2325. [bug] razvan
|
||||||
Fixed a bug which was causing address allocation counters to be
|
Fixed a bug which was causing address allocation counters to be
|
||||||
negative when client released leases and the server has lease
|
negative when client released leases and the server has lease
|
||||||
|
@ -3266,7 +3266,8 @@ MySqlLeaseMgr::updateLeaseCommon(MySqlLeaseContextPtr& ctx,
|
|||||||
// If no rows affected, lease doesn't exist.
|
// If no rows affected, lease doesn't exist.
|
||||||
if (affected_rows == 0) {
|
if (affected_rows == 0) {
|
||||||
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
||||||
lease->addr_.toText() << " as it does not exist");
|
lease->addr_.toText() << " either because the lease does not exist, "
|
||||||
|
"it has been deleted or it has changed in the database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should not happen - primary key constraint should only have selected
|
// Should not happen - primary key constraint should only have selected
|
||||||
|
@ -2500,7 +2500,8 @@ PgSqlLeaseMgr::updateLeaseCommon(PgSqlLeaseContextPtr& ctx,
|
|||||||
// If no rows affected, lease doesn't exist.
|
// If no rows affected, lease doesn't exist.
|
||||||
if (affected_rows == 0) {
|
if (affected_rows == 0) {
|
||||||
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
||||||
lease->addr_.toText() << " as it does not exist");
|
lease->addr_.toText() << " either because the lease does not exist, "
|
||||||
|
"it has been deleted or it has changed in the database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should not happen - primary key constraint should only have selected
|
// Should not happen - primary key constraint should only have selected
|
||||||
|
@ -630,8 +630,8 @@ AllocEngine::allocateLeases6(ClientContext6& ctx) {
|
|||||||
return (leases);
|
return (leases);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (const NoSuchLease&) {
|
} catch (const NoSuchLease& e) {
|
||||||
throw;
|
isc_throw(NoSuchLease, "detected data race in AllocEngine::allocateLeases6: " << e.what());
|
||||||
|
|
||||||
} catch (const isc::Exception& e) {
|
} catch (const isc::Exception& e) {
|
||||||
|
|
||||||
@ -2186,8 +2186,8 @@ AllocEngine::renewLeases6(ClientContext6& ctx) {
|
|||||||
|
|
||||||
return (leases);
|
return (leases);
|
||||||
|
|
||||||
} catch (const NoSuchLease&) {
|
} catch (const NoSuchLease& e) {
|
||||||
throw;
|
isc_throw(NoSuchLease, "detected data race in AllocEngine::renewLeases6: " << e.what());
|
||||||
|
|
||||||
} catch (const isc::Exception& e) {
|
} catch (const isc::Exception& e) {
|
||||||
|
|
||||||
@ -3753,8 +3753,8 @@ AllocEngine::allocateLease4(ClientContext4& ctx) {
|
|||||||
ctx.new_lease_ = requestLease4(ctx);
|
ctx.new_lease_ = requestLease4(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (const NoSuchLease&) {
|
} catch (const NoSuchLease& e) {
|
||||||
throw;
|
isc_throw(NoSuchLease, "detected data race in AllocEngine::allocateLease4: " << e.what());
|
||||||
|
|
||||||
} catch (const isc::Exception& e) {
|
} catch (const isc::Exception& e) {
|
||||||
// Some other error, return an empty lease.
|
// Some other error, return an empty lease.
|
||||||
|
@ -1862,8 +1862,9 @@ Memfile_LeaseMgr::updateLease4Internal(const Lease4Ptr& lease) {
|
|||||||
((*lease_it)->valid_lft_ != lease->current_valid_lft_))) {
|
((*lease_it)->valid_lft_ != lease->current_valid_lft_))) {
|
||||||
// For test purpose only: check that the lease has not changed in
|
// For test purpose only: check that the lease has not changed in
|
||||||
// the database.
|
// the database.
|
||||||
isc_throw(NoSuchLease, "failed to update the lease with address "
|
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
||||||
<< lease->addr_ << " - lease has changed in database");
|
lease->addr_.toText() << " either because the lease does not exist, "
|
||||||
|
"it has been deleted or it has changed in the database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to write a lease to disk first. If this fails, the lease will
|
// Try to write a lease to disk first. If this fails, the lease will
|
||||||
@ -1925,8 +1926,9 @@ Memfile_LeaseMgr::updateLease6Internal(const Lease6Ptr& lease) {
|
|||||||
((*lease_it)->valid_lft_ != lease->current_valid_lft_))) {
|
((*lease_it)->valid_lft_ != lease->current_valid_lft_))) {
|
||||||
// For test purpose only: check that the lease has not changed in
|
// For test purpose only: check that the lease has not changed in
|
||||||
// the database.
|
// the database.
|
||||||
isc_throw(NoSuchLease, "failed to update the lease with address "
|
isc_throw(NoSuchLease, "unable to update lease for address " <<
|
||||||
<< lease->addr_ << " - lease has changed in database");
|
lease->addr_.toText() << " either because the lease does not exist, "
|
||||||
|
"it has been deleted or it has changed in the database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to write a lease to disk first. If this fails, the lease will
|
// Try to write a lease to disk first. If this fails, the lease will
|
||||||
|
Loading…
x
Reference in New Issue
Block a user