New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mon: don't call propose_pending in prepare_update() #14711

Merged
merged 1 commit into from Apr 24, 2017

Conversation

Projects
None yet
3 participants
@jcsp
Contributor

jcsp commented Apr 21, 2017

This was happening indirectly because the command handling
code was calling tick() as a shortcut to "promote something"
and tick calls propose_pending because.

Fixes: http://tracker.ceph.com/issues/19738
Signed-off-by: John Spray john.spray@redhat.com

John Spray
mon: don't call propose_pending in dispatch
This was happening indirectly because the command handling
code was calling tick() as a shortcut to "promote something"
and tick calls propose_pending because.

Fixes: http://tracker.ceph.com/issues/19738
Signed-off-by: John Spray <john.spray@redhat.com>

@jcsp jcsp requested a review from tchaikov Apr 21, 2017

@jcsp

This comment has been minimized.

Contributor

jcsp commented Apr 21, 2017

retest this please

@tchaikov

This comment has been minimized.

Contributor

tchaikov commented Apr 21, 2017

per the backtrace in the ticket, the asserts was triggered when C_Propose callback is called but at that moment, the mon was not the leader anymore. the ps->propose_pending() was scheduled by PaxosService::dispatch() using C_Propose.

but the code path changed here is only called if the mon is the leader. i can hardly turn my head around the reason why the fix addresses the assert failure.

@jcsp

This comment has been minimized.

Contributor

jcsp commented Apr 21, 2017

@tchaikov are you maybe looking at the backtrace in #19639? The one I'm looking at is this one:

/a/jspray-2017-04-21_01:06:29-rados:mgr-wip-jcsp-testing-20170420b-distro-basic-smithi/1050154/remote/smithi047/log/ceph-mon.a.log.gz

In that one it is the master, and I think it is handling a command, consequently creating a timer callback to propose, then tick() happens, then the callback comes back and dies because there is nothing to propose any more.

@liewegas

This comment has been minimized.

Member

liewegas commented Apr 21, 2017

@tchaikov tchaikov changed the title from mon: don't call propose_pending in dispatch to mon: don't call propose_pending in prepare_update() Apr 24, 2017

@tchaikov tchaikov merged commit a952f84 into ceph:master Apr 24, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details

@jcsp jcsp deleted the jcsp:wip-19738 branch Apr 24, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment