The fix for tracker 20089 undid the changes you're seeing in the 15368 pull request.  The attr name mismatch of 'hinfo_key'  means that key is missing because every erasure coded object should have a key called "hinfo_key."

You should try to determine why your extended attributes are getting corrupted.  All the errors are on shard 0.  My testing shows that repair will fix this scenario.

David


On 3/13/18 3:48 PM, Graham Allan wrote:
Updated cluster now to 12.2.4 and the cycle of inconsistent->repair->unfound seems to continue, though possibly slightly differently. A pg does pass through an "active+clean" phase after repair, which might be new, but more likely I never observed it at the right time before.

I see messages like this in the logs now "attr name mismatch 'hinfo_key'" - perhaps this might cast more light on the cause:

2018-03-02 18:55:11.583850 osd.386 osd.386 10.31.0.72:6817/4057280 401 : cluster [ERR] 70.3dbs0 : soid 70:dbc6ed68:::default.325674.85_bellplants_images%2f1055211.jpg:head attr name mismatch 'hinfo_key' 2018-03-02 19:00:18.031929 osd.386 osd.386 10.31.0.72:6817/4057280 428 : cluster [ERR] 70.3dbs0 : soid 70:dbc97561:::default.325674.85_bellplants_images%2f1017818.jpg:head attr name mismatch 'hinfo_key' 2018-03-02 19:04:50.058477 osd.386 osd.386 10.31.0.72:6817/4057280 452 : cluster [ERR] 70.3dbs0 : soid 70:dbcbcb34:::default.325674.85_bellplants_images%2f1049756.jpg:head attr name mismatch 'hinfo_key' 2018-03-02 19:13:05.689136 osd.386 osd.386 10.31.0.72:6817/4057280 494 : cluster [ERR] 70.3dbs0 : soid 70:dbcfc7c9:::default.325674.85_bellplants_images%2f1021177.jpg:head attr name mismatch 'hinfo_key' 2018-03-02 19:13:30.883100 osd.386 osd.386 10.31.0.72:6817/4057280 495 : cluster [ERR] 70.3dbs0 repair 0 missing, 161 inconsistent objects 2018-03-02 19:13:30.888259 osd.386 osd.386 10.31.0.72:6817/4057280 496 : cluster [ERR] 70.3db repair 161 errors, 161 fixed

The only similar-sounding issue I could find is

http://tracker.ceph.com/issues/20089

When I look at src/osd/PGBackend.cc be_compare_scrubmaps in luminous, I don't see the changes in the commit here:

https://github.com/ceph/ceph/pull/15368/files

of course a lot of other things have changed, but is it possible this fix never made it into luminous?

Graham

On 02/17/2018 12:48 PM, David Zafman wrote:

The commits below came after v12.2.2 and may impact this issue. When a pg is active+clean+inconsistent means that scrub has detected issues with 1 or more replicas of 1 or more objects . An unfound object is a potentially temporary state in which the current set of available OSDs doesn't allow an object to be recovered/backfilled/repaired.  When the primary OSD restarts, any unfound objects ( an in memory structure) are reset so that the new set of peered OSDs can determine again what objects are unfound.

I'm not clear in this scenario whether recovery failed to start, recovery hung before due to a bug or if recovery stopped (as designed) because of the unfound object.  The new recovery_unfound and backfill_unfound states indicates that recovery has stopped due to unfound objects.


commit 64047e1bac2e775a06423a03cfab69b88462538c
Author: David Zafman <dzaf...@redhat.com>
Date:   Wed Jan 10 13:30:41 2018 -0800

     osd: Don't start recovery for missing until active pg state set

     I was seeing recovery hang when it is started before _activate_committed()      The state machine passes into "Active" but this transitions to activating
     pg state and after commmitted into "active" pg state.

     Signed-off-by: David Zafman <dzaf...@redhat.com>

commit 7f8b0ce9e681f727d8217e3ed74a1a3355f364f3
Author: David Zafman <dzaf...@redhat.com>
Date:   Mon Oct 9 08:19:21 2017 -0700

     osd, mon: Add new pg states recovery_unfound and backfill_unfound

     Signed-off-by: David Zafman <dzaf...@redhat.com>



On 2/16/18 1:40 PM, Gregory Farnum wrote:
On Fri, Feb 16, 2018 at 12:17 PM Graham Allan <g...@umn.edu> wrote:

On 02/16/2018 12:31 PM, Graham Allan wrote:
If I set debug rgw=1 and demug ms=1 before running the "object stat"
command, it seems to stall in a loop of trying communicate with osds for
pool 96, which is .rgw.control

10.32.16.93:0/2689814946 --> 10.31.0.68:6818/8969 --
osd_op(unknown.0.0:541 96.e 96:7759931f:::notify.3:head [watch ping
cookie 139709246356176] snapc 0=[] ondisk+write+known_if_redirected
e507695) v8 -- 0x7f10ac033610 con 0
10.32.16.93:0/2689814946 <== osd.38 10.31.0.68:6818/8969 59 ====
osd_op_reply(541 notify.3 [watch ping cookie 139709246356176] v0'0
uv3933745 ondisk = 0) v8 ==== 152+0+0 (2536111836 <(253)%20611-1836> 0
0) 0x7f1158003e20
con 0x7f117afd8390
Prior to that, probably more relevant, this was the only communication
logged with the primary osd of the pg:

10.32.16.93:0/1552085932 --> 10.31.0.71:6838/66301 --
osd_op(unknown.0.0:96 70.438s0
70:1c20c157:::default.325674.85_bellplants_images%2f1042066.jpg:head
[getxattrs,stat] snapc 0=[] ondisk+read+known_if_redirected e507695)
v8 -- 0x7fab79889fa0 con 0
10.32.16.93:0/1552085932 <== osd.175 10.31.0.71:6838/66301 1 ====
osd_backoff(70.438s0 block id 1

[70:1c20c157:::default.325674.85_bellplants_images%2f1042066.jpg:head,70:1c20c157:::default.325674.85_bellplants_images%2f1042066.jpg:head)
e507695) v1 ==== 209+0+0 (1958971312 0 0) 0x7fab5003d3c0 con
0x7fab79885980
210.32.16.93:0/1552085932 --> 10.31.0.71:6838/66301 --
osd_backoff(70.438s0 ack-block id 1

[70:1c20c157:::default.325674.85_bellplants_images%2f1042066.jpg:head,70:1c20c157:::default.325674.85_bellplants_images%2f1042066.jpg:head)
e507695) v1 -- 0x7fab48065420 con 0
so I guess the backoff message above is saying the object is
unavailable. OK, that certainly makes sense. Not sure that it helps me
understand how to fix the inconsistencies....
If I restart the primary osd for the pg, that makes it forget its state
and return to active+clean+inconsistent. I can then download the
previously-unfound objects again, as well as run "radosgw-admin object
stat".

So the interesting bit is probably figuring out why it decides these
objects are unfound, when clearly they aren't.

What would be the best place to enable additional logging to understand
this - perhaps the primary osd?

David, this sounds like one of the bugs where an OSD can mark objects as inconsistent locally but then doesn't actually trigger recovery on them. Or
it doesn't like any copy but doesn't persist that.
Do any known issues around that apply to 12.2.2?
-Greg


Thanks for all your help,

Graham
--
Graham Allan
Minnesota Supercomputing Institute - g...@umn.edu




_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com

Reply via email to