Bug #4562
closedOSD fails to start with error assert(values.size() == 2)
0%
Description
The problem occurred after an upgrade to master (67c696dfac0a2343ec7530ca68e5ea9b2d3d31d0).
Error from log is:
2013-03-26 14:13:11.385596 7f7f1994e780 -1 osd/PG.cc: In function 'static int PG::read_info(ObjectStore*, coll_t, ceph::bufferlist&, pg_info_t&, std::map<unsigned int, pg_interval_t>&, hobject_t&, hobject_t&, interval_set<snapid_t>&, __u8&)' thread 7f7f1994e780 time 2013-03-26 14:13:11.384607
osd/PG.cc: 2785: FAILED assert(values.size() == 2)
The log is attached.
Files
Updated by David Zafman about 11 years ago
- Status changed from New to In Progress
This was caused by the termination of an OSD while it was still running load_pgs() dealing with an upgrade from 0.56.4 to master.
It was found that PG:upgrade() includes a call to write_if_dirty() but with only dirty_info set. This would call write_info() upgrading the info_struct_v WITHOUT creating a new biginfo key.
The non-SnapMapper upgrade code path would normally call write_if_dirty() later when load_pgs() calls build_past_intervals_parallel().
Updated by David Zafman about 11 years ago
- Status changed from In Progress to Resolved
Updated by Joachim Nolten about 11 years ago
I am seeing this exact issue after upgrading from 0.56.4 to 0.60. How do I get the OSD back online?
Updated by Joachim Nolten about 11 years ago
I am seeing this exact issue after upgrading from 0.56.4 to 0.60. How do I get the OSD back online?