[openstack-dev] [Panko] Ways to go through events in the order they appear in database

gordon chung gord at live.ca
Tue Sep 5 12:44:36 UTC 2017



On 04/09/17 11:17 AM, Mikhail Kebich wrote:
> Hello Gordon,
>
> Any feedback? Did you get a chance to take a look at the cursor api prototype?
>
> Thanks,
> Mike
>
> On Wed, Aug 30, 2017 at 6:00 PM, Mikhail Kebich
> <mikhail.kebich at gmail.com> wrote:
>> On Wed, Aug 30, 2017 at 4:22 PM, gordon chung <gord at live.ca> wrote:
>>> ah, i see. iirc, we can choose what we sort on. can this be solved by
>>> just passing in a different sort key? or maybe we need to support
>>> returning results without sort.
>>
>> I thought about this. The key issue I see here is that the api does
>> not include "id" sort key to the result. Because of this api clients
>> can't specify a value of marker that points to the next batch of
>> events. And I believe we should think carefully about exposing this
>> filed because it may be meaningless depending on a storage back-end.
>>
>> Actually, cursors are intended to solve this issue by specifying a
>> value of marker explicitly without making an assumption what marker
>> is.
>>
>> I attached a prototype. It is based on stable/ocata branch. I did not
>> replace existing pagination and just provided another URL route to use
>> cursors. But, I think it is possible to replace current pagination
>> logic with cursors, because if a storage back-end understands markers
>> it can specify the value explicitly.
>>

sorry, i thought you were going to post your patch to gerrit.

i just took a look at your patch. you can correct me if i misunderstand 
your patch but it just seems that you want to add support to use id as a 
marker, specifically the following:

+            marker = models.Event(None, None, None, None)
+            marker.id = cursor
+            sort_keys = ['id']
+            sort_dirs = ['asc']
+            query = oslo_sql_utils.paginate_query(
+                query, models.Event, limit, sort_keys,
+                sort_dirs=sort_dirs, marker=marker)

the one concern i have with raising id is because its just an 
autoincremented number (i believe) and it has no meaning outside of the 
db. i also don't believe it exists in any of the other backends.

based on the code above, i would imagine the equivalent could be 
achieved by just sorting by id and continuing to use message_id as a 
marker. (sorting by id might not be necessary but sql apparently doesn't 
guarantee default order)

cheers,

-- 
gord


More information about the OpenStack-dev mailing list