Project

General

Profile

Actions

Bug #12747

closed

osd/PGBackend.cc: 294: FAILED assert(ec_impl) - wrong path on rpm distros

Added by Sage Weil over 8 years ago. Updated over 8 years ago.

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

Actions #1

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.

Actions #2

Updated by Sage Weil over 8 years ago

  • Status changed from New to Fix Under Review
Actions #3

Updated by Sage Weil over 8 years ago

  • Status changed from Fix Under Review to Resolved
Actions

Also available in: Atom PDF