From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: tarantool-patches@freelists.org, Konstantin Osipov <kostja@tarantool.org> Cc: vdavydov.dev@gmail.com Subject: Re: [tarantool-patches] Re: [PATCH v4 03/12] rlist: introduce rlist_add_tail_entry_sorted Date: Fri, 15 Feb 2019 16:34:03 +0300 [thread overview] Message-ID: <3ea52afc-7425-883b-44df-69376aa2e1b1@tarantool.org> (raw) In-Reply-To: <20190215132650.GF24683@chai> On 15/02/2019 14:26, Konstantin Osipov wrote: > * Vladislav Shpilevoy <v.shpilevoy@tarantool.org> [19/01/31 10:28]: >> Add an entry to an ascending sorted list. Scan is started from >> the tail. Applicable when new elements are usually already bigger >> than all other ones, since insertion into a sorted list is O(N). >> >> Necessary for SWIM implementation, where a list is stored of >> members, waiting for an ACK. Sometimes there can be inserted an >> indirect ACK, which deadline could be bigger, than deadlines >> of next direct ACKs. So new elements are inserted either into the >> tail, or almost into the tail. >> >> Order allows to stop checking next elements for an unacknowledged >> ping when on a next one deadline is not exceeded yet. >> >> Needed for #3234 > > I don't mind having an insert into a sorted list, but > 1) we're not stl, so this algorithm is not a generic one. Soon > we'll get slist_insert_sorted, array_insert_sorted, etc. It is generic for rlist. It takes a comparator. > 2) I don't understand if there is any reason to use rlist in this > case, why not use a red-black tree? RB-tree is an overkill here. As I described in the commit message, almost always a new element is pushed at the end of the list. Also, out generic RB tree does not have O(1) access to the smallest element. Honestly, I understand your complaint, and recently I decided to use a heap here in later versions of the patchset. Heap gives me O(1) access to the smallest element, while still proving O(log) removal/addition. Moreover, when a new element is the biggest, insertion is O(1) also. And this is the most popular case here. > 3) Why do we have the test in the server, while the library itself > is a subproject? I believe the library does have unit tests, > why not add tests there? For an unknown for me reason, rlist tests are stored in the server repo. I do not know why and I decided not to break it here. > > > -- > Konstantin Osipov, Moscow, Russia, +7 903 626 22 32 > http://tarantool.io - www.twitter.com/kostja_osipov >
next prev parent reply other threads:[~2019-02-15 13:34 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-30 21:28 [PATCH v4 00/12] SWIM draft Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 01/12] sio: introduce sio_uri_to_addr Vladislav Shpilevoy 2019-02-15 13:21 ` [tarantool-patches] " Konstantin Osipov 2019-02-15 21:22 ` [tarantool-patches] " Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 10/12] [RAW] swim: introduce 'quit' message Vladislav Shpilevoy 2019-02-21 12:13 ` [tarantool-patches] " Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 11/12] [RAW] swim: introduce broadcast tasks Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 12/12] [RAW] swim: allow to use broadcast tasks to send pings Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 02/12] evio: expose evio_setsockopt_server function Vladislav Shpilevoy 2019-02-15 13:21 ` [tarantool-patches] " Konstantin Osipov 2019-02-15 21:22 ` [tarantool-patches] " Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 03/12] rlist: introduce rlist_add_tail_entry_sorted Vladislav Shpilevoy 2019-02-15 13:26 ` [tarantool-patches] " Konstantin Osipov 2019-02-15 13:34 ` Vladislav Shpilevoy [this message] 2019-02-15 18:07 ` [tarantool-patches] " Konstantin Osipov 2019-01-30 21:28 ` [PATCH v4 04/12] [RAW] swim: introduce SWIM's anti-entropy component Vladislav Shpilevoy 2019-02-21 18:35 ` [tarantool-patches] " Konstantin Osipov 2019-02-26 18:28 ` [tarantool-patches] " Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 05/12] [RAW] swim: introduce failure detection component Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 06/12] [RAW] swim: introduce dissemination component Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 07/12] [RAW] swim: keep encoded round message cached Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 08/12] [RAW] swim: introduce payload Vladislav Shpilevoy 2019-01-30 21:28 ` [PATCH v4 09/12] [RAW] swim: introduce routing Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=3ea52afc-7425-883b-44df-69376aa2e1b1@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=vdavydov.dev@gmail.com \ --subject='Re: [tarantool-patches] Re: [PATCH v4 03/12] rlist: introduce rlist_add_tail_entry_sorted' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox