Skip to content

Commit 47c922c

Browse files
Merge pull request ceph#63425 from NitzanMordhai/wip-nitzan-osdmap-incremental-process-idle
objecter: request OSDMap after idle ticks
2 parents c056c9f + adaab09 commit 47c922c

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

qa/tasks/mgr/dashboard/test_rgw.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
from cryptography.hazmat.primitives.hashes import SHA1
1111
from cryptography.hazmat.primitives.twofactor.totp import TOTP
1212

13-
from .helper import (DashboardTestCase, JLeaf, JList, JObj,
14-
skip_unless_dashboard_pr)
13+
from .helper import DashboardTestCase, JLeaf, JList, JObj
1514

1615
logger = logging.getLogger(__name__)
1716

@@ -67,7 +66,6 @@ def get_rgw_user(self, uid, stats=True):
6766
return self._get('/api/rgw/user/{}?stats={}'.format(uid, stats))
6867

6968

70-
@skip_unless_dashboard_pr
7169
class RgwSiteTest(RgwTestCase):
7270

7371
AUTH_ROLES = ['rgw-manager']

src/osdc/Objecter.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,6 +2052,7 @@ void Objecter::maybe_request_map()
20522052

20532053
void Objecter::_maybe_request_map()
20542054
{
2055+
last_osdmap_request_time = ceph::coarse_mono_clock::now();
20552056
// rwlock is locked
20562057
int flag = 0;
20572058
if (_osdmap_full_flag()
@@ -2238,8 +2239,20 @@ void Objecter::tick()
22382239
if (found)
22392240
toping.insert(s);
22402241
}
2242+
22412243
if (num_homeless_ops || !toping.empty()) {
22422244
_maybe_request_map();
2245+
} else if (last_osdmap_request_time != ceph::coarse_mono_clock::time_point()) {
2246+
auto now = ceph::coarse_mono_clock::now();
2247+
auto elapsed = now - last_osdmap_request_time;
2248+
auto stale_window = ceph::make_timespan(cct->_conf->objecter_tick_interval) * 2;
2249+
if (elapsed > stale_window) {
2250+
double elapsed_s = std::chrono::duration<double>(elapsed).count();
2251+
double thresh_s = std::chrono::duration<double>(stale_window).count();
2252+
ldout(cct, 10) << __func__ << ": osdmap stale: " << elapsed_s
2253+
<< "s > " << thresh_s << "s, maybe requesting map" << dendl;
2254+
_maybe_request_map();
2255+
}
22432256
}
22442257

22452258
logger->set(l_osdc_op_laggy, laggy_ops);

src/osdc/Objecter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2519,6 +2519,9 @@ class Objecter : public md_config_obs_t, public Dispatcher {
25192519
ceph::timespan mon_timeout;
25202520
ceph::timespan osd_timeout;
25212521

2522+
// last time osdmap was requested
2523+
ceph::coarse_mono_time last_osdmap_request_time;
2524+
25222525
MOSDOp *_prepare_osd_op(Op *op);
25232526
void _send_op(Op *op);
25242527
void _send_op_account(Op *op);

0 commit comments

Comments
 (0)