couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Samuel Newson <>
Subject Re: [DISCUSS] Mango indexes on FDB
Date Tue, 24 Mar 2020 14:32:29 GMT

We had a long discussion on the CouchDB Slack on this topic, which I will brutally summarise;

While we intend to update json indexes in the same transaction as the associated document
update, there is a concern that this won't always be possible (large document and large number
of indexes to update at once) and that it will not apply to javascript map indexes or search

It was therefore felt that having an immediate "Not ready" signal for just _some_ calls to
_find, based on the type of backing index, was a bad and confusing api.

We also discussed _find calls where the user does not specify an index, and concluded that
we would be free to choose between using the _all_docs index (which is always up to date but
rarely the best index for a given selector) or blocking to update a better but stale index.

Summary-ing my summarisation;

1) if you specify an index, we'll use it even if we have to update it, no matter how long
that takes.
2) if you don't specify an index, it's the dealers choice. The details here may change in
point releases.

No new status code is therefore needed.


> On 24 Mar 2020, at 12:51, Garren Smith <> wrote:
> On Tue, Mar 24, 2020 at 1:30 AM Joan Touzet <> wrote:
>> On 2020-03-23 4:46 p.m., Mike Rhodes wrote:
>>> Garren,
>>> Very much +1 on this suggestion, as it is, at least for me, what I'd
>> expect to happen if I were leaving the system to select an index -- as you
>> imply, the build process almost certainly takes longer than using the
>> _all_docs index. In addition, for the common case where there is a less
>> optimal but still useful index available, one might expect that index to be
>> used in preference to the "better" but unbuilt one.
>> I agree.
>>> But I do think this is important:
>>>> We can amend the warning message
>>>> to let them know that they have an index that is building that could
>>>> service the index when it's ready.
>>> Otherwise it's a bit too easy to get confused when trying to understand
>> the reason why an index you were _sure_ should've been used in fact was not.
>> Question: Imagine a node that's been offline for a bit and is just
>> coming back on. (I'm not 100% sure how this works in FDB land.) If
>> there's a (stale) index on disk, and the index is being updated, and the
>> index on disk is kind of stale...what happens?
> With couchdb_layer this can't happen as each CouchDB node is stateless and
> doesn't actually keep any indexes. Everything would be in FoundationDB. So
> if the index is built then it is built and ready for all couch_layer nodes.
> FoundationDB storage servers could fall behind the Tlogs. I'm not 100% sure
> what would happen in this case. But it would be consistent for all
> couch_layer nodes.
>> -Joan

View raw message