Tiago Melo [Tue, 22 May 2018 14:49:23 +0000 (15:49 +0100)]
mgr/dashboard: Fix Jest conflict with coverage files
It seems 'jest --watch' is trying to determine the modules that are imported
inside the coverage folder.
Since this folder is not always up to date, when there are references to
nonexistent files, Jest will simply break and hang still.
I added an explicit rule for Jest to ignore this folder.
Kefu Chai [Tue, 29 May 2018 03:01:43 +0000 (11:01 +0800)]
src: balance std::hex and std::dec manipulators
we're caching the "t_os.streambuf", so the fmtflags persist across
log entries. to avoid this side effects, we should do the cleanup
before finishing each log entry.
Sage Weil [Sun, 27 May 2018 14:55:04 +0000 (09:55 -0500)]
mon/OSDMonitor: no_reply on MOSDFailure ops we eventually process
Failure ops get attached to the failure report. Once we finally process
them, mark them no_reply so that the forwarding mon will know about it.
The other paths through prepare_failure() do no_reply on the messages
that don't get logged in the failure_info_t::reporters.
Fixes: http://tracker.ceph.com/issues/24322 Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Mon, 28 May 2018 18:50:48 +0000 (13:50 -0500)]
mon/Monitor: use legacy ranks during bootstrap for initial seed monmap
We get various fabricated monmaps with epoch 0 to get things started. Use
the legacy rank order so that we have a well-defined ordering and mon
ranks do not collide.
Sage Weil [Mon, 28 May 2018 18:36:54 +0000 (13:36 -0500)]
Merge PR #22256 into master
* refs/pull/22256/head:
unittest_addrs: check parse() return value too
common/LogEntry: remove addrs from log entry operator<<
common/LogEntry: addr -> addrs
common/LogEntry: no need for LogEntryKey encode/decode
msg/msg_types: entity_addrvec_t ctors
msg/msg_types: add entity_addrvec_t::legacy_addr() helper
msg/msg_types: some comparators for entity_addrvec_t
msg/msg_types: entity_addrvec_t parse() and operator<<
Kefu Chai [Mon, 28 May 2018 11:37:44 +0000 (19:37 +0800)]
qa: wait longer for osd to flush pg stats
pg sends pg-stats to mgr every 5 seconds, so we cannot check for the
number of pgs right after creating the pool, at that moment, the number
of pgs could be 0, that's why manger.wait_for_clean() returns right
away, and leaves us with 0 pgs: the pgs serving the pool are still being
created. that's why `manager.get_num_active_clean()` returns `0`
sometimes. so, we should force osd to flush their stats to mgr, and wait
until the pg stats converages.
Sage Weil [Fri, 25 May 2018 20:11:32 +0000 (15:11 -0500)]
common/LogEntry: addr -> addrs
We want to switch to an addrvec. This requires multiple parts:
- switch the Key type to use just the rank
- separate entity_name_t rank
- compat encoding
- graylog field naming has changed (includes name)
- syslog output formatting has changed (includes name)
- LogEntry operator<< modified a bit
Add a command to manipulate the mon ranks. This lets you control which
mon is preferred as the primary, in case you care about such things.
Mostly it doesn't matter. (Previously we preferred the mon with the
lowest-sorting IP address, which is pretty arbitrary.)
Sage Weil [Wed, 23 May 2018 17:52:06 +0000 (12:52 -0500)]
mon/MonMap: separate rank ordering from entity_addr_t
We currently define the mon rank ordering based on the sort order of the
mon addresses. Change that so that the rank order is explicitly encoded
in the ranks field of the MonMap.
If we load a legacy MonMap, calculate the legacy ordering.
If the monmap does not require nautilus features yet, force the legacy
ordering. Once all mons are >= nautilus, we can reorder ranks. Note that
the daemons and clients (MonClients) may see a different rank ordering.
That should be okay.
Neha Ojha [Mon, 21 May 2018 19:34:31 +0000 (12:34 -0700)]
PG: add custom_reaction Backfilled and release reservations after backfill
After backfill completes, we directly go to the Recovered state without
releasing reservations. The outstanding reservations cause double reservation
issues.
Creating a custom_reaction Backfilled, allows us to release reservations,
before transiting to the Recovered state.
Sage Weil [Thu, 24 May 2018 14:26:18 +0000 (09:26 -0500)]
mon: change timecheck_* key to int
We don't need to use entity_inst_t here since we're only paying attention
to mons in the quorum.
This involves changing the message format. To save some time/effort and
complexity, we only support time checks on all-nautilus. If you are
mid-upgrade, the time sync checks are skipped.
Matt Benjamin [Thu, 24 May 2018 20:09:01 +0000 (16:09 -0400)]
rgw: add configurable AWS-compat invalid range get behavior
If rgw_ignore_get_invalid_range is set, treat invalid range
restrictions as a request for the full object. By default, retain
the RGW behavior to fail with ERANGE.
Fixes: http://tracker.ceph.com/issues/24317 Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
Sage Weil [Fri, 25 May 2018 18:27:58 +0000 (13:27 -0500)]
Merge PR #22230 into master
* refs/pull/22230/head:
test/cli-integration/rbd: fixed unit formatting
qa/workunits/rbd: fix unit formatting tests
librbd: clones should not inherit implicit feature bits from parent
Xiaoxi CHEN [Fri, 25 May 2018 09:15:08 +0000 (02:15 -0700)]
Revert "mon: no delay for single message MSG_ALIVE and MSG_PGTEMP"
This change doesn't looks right and causing twice as much proposal as we targeted to (limited by paxos_propose_interval).
Imaging we have a sequence of pg_temp/up_thru during a large recovery.
now =T
The 1st up_thru/pg_temp will go through fast path and trigger propose at T + paxos_min_wait, last_attempted_minwait_time = T.
now = T+ paxos_min_wait
The [2, K] up_thru will failed by (now - last_attempted_minwait_time > g_conf->paxos_propose_interval)
and go through PaxosService::should_propose, which will schedule the propose at) T+paxos_propose_interval
now= T+ paxos_propose_interval + paxos_min_wait
The K+1 up_thru/pg_temp comes, both (now - last_attempted_minwait_time > g_conf->paxos_propose_interval
and now - paxos->get_last_commit_time() > g_conf->paxos_min_wait satisfied, so we trigger another propose
in now+ paxos_min_wait = T+ paxos_propose_interval +paxos_min_wait.
clearly we made TWO proposal in each paxos_propose_interval.