]> 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)
committerjiahuizeng <jhzeng93@foxmail.com>
Fri, 31 Jan 2020 11:57:58 +0000 (11:57 +0000)
Fixes: https://tracker.ceph.com/issues/42634
Signed-off-by: jiahuizeng <jhzeng93@foxmail.com>
src/rgw/rgw_lc.cc

index a38169655a433b21dfdaf63e49ed81edc9e1bc40..5c7bc2def968fa0577ac8b1d68d8a44fe288d253 100644 (file)
@@ -308,11 +308,11 @@ static bool obj_has_expired(CephContext *cct, ceph::real_time mtime, int days, c
   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();
   }
   timediff = base_time - ceph::real_clock::to_time_t(mtime);
@@ -1656,7 +1656,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));
       }
     }