]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: avoid expiration early triggering caused by overflow
authorjiahuizeng <jhzeng93@foxmail.com>
Tue, 5 Nov 2019 02:48:51 +0000 (10:48 +0800)
committerNathan Cutler <ncutler@suse.com>
Thu, 3 Dec 2020 11:31:56 +0000 (12:31 +0100)
Fixes: https://tracker.ceph.com/issues/42634
Signed-off-by: jiahuizeng <jhzeng93@foxmail.com>
(cherry picked from commit 260df7dfd819a4117ae76aaf699370afda653baf)

src/rgw/rgw_lc.cc

index 2d6357c83fbbaa8578312379cd7f719f5afc5fc2..2967ab05b53b0c651e6c1f3ae07b27c39147db4d 100644 (file)
@@ -345,11 +345,11 @@ static bool obj_has_expired(CephContext *cct, ceph::real_time mtime, int days,
   utime_t base_time;
   if (cct->_conf->rgw_lc_debug_interval <= 0) {
     /* Normal case, run properly */
-    cmp = days*24*60*60;
+    cmp = (double)days*24*60*60;
     base_time = ceph_clock_now().round_to_day();
   } else {
     /* We're in debug mode; Treat each rgw_lc_debug_interval seconds as a day */
-    cmp = days*cct->_conf->rgw_lc_debug_interval;
+    cmp = (double)days*cct->_conf->rgw_lc_debug_interval;
     base_time = ceph_clock_now();
   }
   auto tt_mtime = ceph::real_clock::to_time_t(mtime);
@@ -2229,7 +2229,7 @@ std::string s3_expiration_header(
       if (rule_expiration.has_days()) {
        rule_expiration_date =
          boost::optional<ceph::real_time>(
-           mtime + make_timespan(rule_expiration.get_days()*24*60*60 - ceph::real_clock::to_time_t(mtime)%(24*60*60) + 24*60*60));
+           mtime + make_timespan((double)rule_expiration.get_days()*24*60*60 - ceph::real_clock::to_time_t(mtime)%(24*60*60) + 24*60*60));
       }
     }