Actions
Bug #12747
closedosd/PGBackend.cc: 294: FAILED assert(ec_impl) - wrong path on rpm distros
Status:
Resolved
Priority:
Urgent
Assignee:
-
Category:
-
Target version:
-
% Done:
0%
Source:
Q/A
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
0> 2015-08-20 19:00:11.861169 7f592114e700 -1 osd/PGBackend.cc: In function 'static PGBackend* PGBackend::build_pg_backend(const pg_pool_t&, OSDMapRef, PGBackend::Listener*, coll_t, ObjectStore*, CephContext*)' thread 7f592114e700 time 2015-08-20 19:00:11.855858 osd/PGBackend.cc: 294: FAILED assert(ec_impl) ceph version 9.0.2-1465-gf021e91 (f021e91e618c1bb73c57604def584bca468a4ac2) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x85) [0x7f5932f3a9c5] 2: (()+0x53add1) [0x7f5932c12dd1] 3: (ReplicatedPG::ReplicatedPG(OSDService*, std::shared_ptr<OSDMap const>, PGPool const&, spg_t)+0x1a0) [0x7f5932be0e90] 4: (OSD::_make_pg(std::shared_ptr<OSDMap const>, spg_t)+0x234) [0x7f59329c9324] 5: (OSD::_open_lock_pg(std::shared_ptr<OSDMap const>, spg_t, bool)+0x97) [0x7f59329dd117] 6: (OSD::_create_lock_pg(std::shared_ptr<OSDMap const>, spg_t, bool, bool, bool, int, std::vector<int, std::allocator<int> >&, int, std::vector<int, std::allocator<int> >&, int, pg_history_t, std::map<unsigned int, pg_interval_t, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, pg_interval_t> > >&, ObjectStore::Transaction&)+0xfe) [0x7f59329ee87e] 7: (OSD::handle_pg_create(std::shared_ptr<OpRequest>)+0x1764) [0x7f5932a07d94] 8: (OSD::dispatch_op(std::shared_ptr<OpRequest>)+0x220) [0x7f5932a0b800] 9: (OSD::do_waiters()+0x1c2) [0x7f5932a0bac2] 10: (OSD::ms_dispatch(Message*)+0x227) [0x7f5932a0ce67] 11: (DispatchQueue::entry()+0x649) [0x7f5932ff4649] 12: (DispatchQueue::DispatchThread::entry()+0xd) [0x7f5932f1b39d] 13: (()+0x7df5) [0x7f593104fdf5] 14: (clone()+0x6d) [0x7f592fafb1ad] NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
I think teh path is wrong on rpm distros. from ceph osd dump,
"erasure_code_profiles": { "default": { "directory": "\/usr\/lib\/ceph\/erasure-code", "k": "2", "m": "1", "plugin": "jerasure", "ruleset-failure-domain": "osd", "technique": "reed_sol_van" }, "shecprofile": { "c": "2", "directory": "\/usr\/lib\/ceph\/erasure-code", "k": "4", "m": "3", "name": "shecprofile", "plugin": "shec", "ruleset-failure-domain": "osd", "ruleset-root": "default", "technique": "multiple" } }
(/usr/lib/...)
but the pacakge has
/usr/lib64/ceph/erasure-code ...
this is on
[ubuntu@plana11 ~]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.1.1503 (Core) Release: 7.1.1503 Codename: Core
Updated by Sage Weil over 8 years ago
When a profile is created, the directory is filled in by the monitor. But... the OSDs may be different distros, which different EC plugin paths.
It seems like the OSD should default to the config option, and the profile shoudl only override this path in exception circumstances.
Updated by Sage Weil over 8 years ago
- Status changed from New to Fix Under Review
Updated by Sage Weil over 8 years ago
- Status changed from Fix Under Review to Resolved
Actions