Re: librados3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 23, 2018 at 11:38 AM kefu chai <tchaikov@xxxxxxxxx> wrote:
>
> we plan to introduce some non-backward-compatible changes[0] in
> librados in the coming nautilus release. to be specific, these changes
> are not API/ABI compatible with existing librados2. so i think it's
> time to bump up the soversion of librados from 2 to 3.  as bumping up
> soversion is a major change in the life cycle of a library, i think we
> will expect following changes:
>
> 0. piggyback more non-backward-compatible changes listed in
> https://pad.ceph.com/p/librados3 in this change, so we can have less
> soversion bump up.
> 1. in nautilus, librados3 and librados3-{dev,devel} will be packaged
> instead, librados2* will be maintained in LTS releases.

Just note that this is going to have a potential ripple effect on
non-Ceph packages that use librbd1 if they are also (incorrectly)
specifying a dependency on librados2 [1].

> 2. we will have separated C++ and C API librados after this change. so
> librados3 will only provide the C API of librados, the C++ API will be
> offered by libradospp, (the name may vary if you suggest a better
> one). and they will be versioned and packaged separately, and will not
> depend on each other. a PR is posted to do this, see [1]

Do we have a good idea and/or list about who uses the librados C++
API? I seem to vaguely recall perhaps one or so external users. If
librgw/RGW and librbd eventually switch over to something similar to
the API being worked on by Adam [2] and if there are no external users
of the C++ API, should we take the time now to kill all the legacy C++
API methods prior to the release of Nautilus?

> 3. in order to enable user to install librados2 and librados3 at the
> same time, libceph-common.so will be versioned since nautilus.
> libceph-common.so is an internal shared library used by ceph
> libraries, tools and daemons. librados depends on libceph-common.
> 4. some executables/libraries' dependencies will be updated
> accordingly . for instance, librbd will depend on libradospp.
>
> if this model works fine, i guess we probably could expand it to librbd.

It would be interesting to get a feel for who (if anyone) actually
uses the librbd C++ interface before heading down that path. AFAIK,
it's probably really only the rbd CLI tool -- and that's basically for
the convenience of C++-style containers. If it's not being used by
anyone else, perhaps our time could be better spent deprecating the
library for external use to focus our development and maintanence
efforts on the C (and wrapped-C) interface.

> any concerns?
>
> BTW, we discussed this topic last year the same time, see
> https://www.spinics.net/lists/ceph-devel/msg38830.html =)
>
> ---
> [0] for instance, https://github.com/ceph/ceph/pull/24498
> [1] https://github.com/ceph/ceph/pull/24616
> [2] a trello card for librados3:
> https://trello.com/c/pmRkawYV/165-librados3-api-update-cleanup
>
> --
> Regards
> Kefu Chai

[1] https://src.fedoraproject.org/rpms/qemu/blob/f29/f/qemu.spec#_192
[2] https://github.com/ceph/ceph/pull/16715

-- 
Jason



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux