]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd/PrimaryLogPG: don't populate watchers if replica 35478/head
authorIlya Dryomov <idryomov@gmail.com>
Mon, 8 Jun 2020 10:57:18 +0000 (10:57 +0000)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 8 Jun 2020 10:57:18 +0000 (10:57 +0000)
commit1652b321da73b45cd33d7a03a2fef47e5708e37e
tree1fe31a71022043466141ec8979b7a0add1daa739
parent0b435b5bba30b4b276c3c76c777ce64247b3e478
osd/PrimaryLogPG: don't populate watchers if replica

If an object has an established watch, serving a read from replica
eventually leads to an assert in is_degraded_or_backfilling_object()
called from handle_watch_timeout().

The issue is that after can_serve_replica_read() check is satisfied,
we look up the object context.  If not found, we fetch the object info
and then call populate_obc_watchers() which sees the recorded watch and
treats it as unconnected, arming HandleWatchTimeout on replica.

Fixes: https://tracker.ceph.com/issues/45795
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
src/osd/PrimaryLogPG.cc