]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/ReplicatedPG: make handle_watch_timeout no-op if !active 8665/head
authorSage Weil <sage@redhat.com>
Fri, 8 Apr 2016 14:35:29 +0000 (10:35 -0400)
committerVicente Cheng <freeze.bilsted@gmail.com>
Wed, 20 Apr 2016 11:19:38 +0000 (19:19 +0800)
commite20df8020458a7b7679d0105183f870220ed0ce7
tree3f6412076b44eac3266939fe682920eea3052445
parente219e85be00088eecde7b1f29d7699493a79bc4d
osd/ReplicatedPG: make handle_watch_timeout no-op if !active

During on_change, we clean up old events on the obcs.  This can
include a queued watch timeout:

 3: (ReplicatedPG::handle_watch_timeout(std::shared_ptr<Watch>)+0x125) [0x7f1fc21fe375]
 4: (HandleDelayedWatchTimeout::finish(int)+0xd3) [0x7f1fc213e2e3]
 5: (Context::complete(int)+0x9) [0x7f1fc20ead29]
 6: (ReplicatedPG::finish_degraded_object(hobject_t const&)+0x354) [0x7f1fc22429e4]
 7: (ReplicatedPG::on_change(ObjectStore::Transaction*)+0x2ba) [0x7f1fc224353a]
 8: (PG::start_peering_interval(std::shared_ptr<OSDMap const>, std::vector<int, std::allocator<int> > const&, int, std::vector<int, std::allocator<int> > const&, int, ObjectStore::Transaction*)+0x7bd) [0x7f1fc219a0bd]

In this case, handle_watch_timeout should not assume that we are
active and primary.

Fixes: http://tracker.ceph.com/issues/15391
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 4b0e39ee11e7bd5079ff6704bc74627d3ba8ba44)
src/osd/ReplicatedPG.cc