This ensures that we resend _all_ requests, since we aren't sure which
may have mapped to a different primary and then back. This was missed in
the original implementation in 4fe9cca5dd63a1924be2b5cb18f542fb4b97a768.
Signed-off-by: Sage Weil <sage@newdream.net>
This may address #1732 indirectly because we have a Connection* reference
here. However, it's still not clear how we ended up with an OSDSession*
for an osd that doesn't exist. :/
Signed-off-by: Sage Weil <sage@newdream.net>
The slurp process can happen after the monitor has started and has some
in-memory version of the state, and that process may wipe out old
incrementals and change the stashed version. That means that in
update_from_paxos, we need to pull the stashed version if it doesn't
match what we currently have or else we may not have the incrementals we
need to get up to date.
This simplifies and cleans up that code a bit so it is not specific to
monitor startup.
Signed-off-by: Sage Weil <sage@newdream.net>
* a refactor in e2100bce left the mod_ptr and unmod_ptr members set
incorrectly in RGWCopyObj::init_common
* a fix in 6752babd aggregated error returns, but then failed to do
anything with them
Signed-off-by: Josh Pieper <jjp@pobox.com>
Signed-off-by: Sage Weil <sage@newdream.net>
These should have no functional changes:
* Check errors from functions that currently cannot return any
* Initialize variables that gcc can't determine will be initialized
in a following function call
* Remove unused variables
Signed-off-by: Josh Pieper <jjp@pobox.com>
Signed-off-by: Sage Weil <sage@newdream.net>
This will be useful in the general case where the cluster is created with
an empty map and useful crush hierarchy.
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
This is simpler and exercises the monitors ability to start with a generic
osdmap and build it out as new osds are added to the cluster.
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
If an initial osdmap is not provided, we generate an empty one. The user
add osds on their own after that.
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
This will set the seed monmap's fsid. This is useful if the monmap is
dynamically generated (e.g., based on ceph.conf or --mon-host list).
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
osd/ReplicatedPG.cc: In member function 'virtual void ReplicatedPG::remove_watchers_and_notifies()':
osd/ReplicatedPG.cc:1167: warning: suggest a space before ';' or explicit braces around empty body in 'for' statement
osd/ReplicatedPG.cc:1176: warning: suggest a space before ';' or explicit braces around empty body in 'for' statement
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
We can safely mkfs with an epoch=0 monmap as long as the fsid is set. And
that is what commit f31825cee5300c708800a01a08201eef2bc03c0c changed.
Instead, use a zeroed fsid to tell if the monmap is valid/usable.
Signed-off-by: Sage Weil <sage@newdream.net>
These are now in the generated crush maps, so it seems appropriate to
recompile them :).
Reported-by: Martin Mailand <martin@tuxadero.com>
Signed-off-by: Sage Weil <sage@newdream.net>
Remove if we previous had no latest, not based on which map we now have.
It's possible we join when monmap epoch is something much larger than 1!
Signed-off-by: Sage Weil <sage@newdream.net>
If a monitor starts up with the correct fsid and auth keys, it will now
add itself to the monmap (and subsequently try to join the quorum) if it
is not already in the monmap.
Signed-off-by: Sage Weil <sage@newdream.net>
We may get the latest monmap when we are doing our probing, but we still
need to process it in update_from_paxos(). Consider get_latest_version()
in addition to the active map.
Signed-off-by: Sage Weil <sage@newdream.net>