int64_t expire_time_64 = static_cast<int64_t>(cltt) +
static_cast<int64_t>(valid_lifetime);
- // On 32-bit systems the time_t is implemented as the int32_t value.
- // We want to detect overflows beyond maximum int32_t value here
- // to avoid the overflow in the PostgreSQL database. The PostgreSQL
- // doesn't catch those overflows on its own.
+ // It has been observed that the PostgreSQL doesn't deal well with the
+ // timestamp values beyond the LeaseMgr::MAX_DB_TIME seconds since the
+ // beginning of the epoch (around year 2038). The value is often
+ // stored in the database but it is invalid when read back (overflow?).
+ // Hence, the maximum timestamp value is restricted here.
if (expire_time_64 > LeaseMgr::MAX_DB_TIME) {
isc_throw(isc::BadValue, "Time value is too large: " << expire_time_64);
}