Boost slots in feed initially showing same boost every time
App loads
Makes a request for feed boosts
https://www.minds.com/api/v2/boost/feed?sync=1&limit=150&as_activities=0&from_timestamp=
10 boosts in the response (collapsed)
{status: "success",…}
entities: [{guid: "1035774263340589056", owner_guid: "957099039059353604", timestamp: 1572323828314,…},…]
0: {guid: "1035774263340589056", owner_guid: "957099039059353604", timestamp: 1572323828314,…}
1: {guid: "1035779062639386624", owner_guid: "681559689124651027", timestamp: 1572324972454,…}
2: {guid: "1035786250887913472", owner_guid: "921106248789663756", timestamp: 1572326686308,…}
3: {guid: "1035789938293035008", owner_guid: "901308211896786959", timestamp: 1572327566415,…}
4: {guid: "1035791224082092032", owner_guid: "676970389145919497", timestamp: 1572327871935,…}
5: {guid: "1035826847799136256", owner_guid: "875994000232816648", timestamp: 1572336365323,…}
6: {guid: "1035835800449212416", owner_guid: "961849683355901956", timestamp: 1572338501533,…}
7: {guid: "1035856345047322624", owner_guid: "681820065431035910", timestamp: 1572343398099,…}
8: {guid: "1035861065590136832", owner_guid: "1034444043108491278", timestamp: 1572344532747,…}
9: {guid: "1035871166169960448", owner_guid: "681510786601852945", timestamp: 1572346931712,…}
load-next: 1572346931712
status: "success"
The first boost gets put into all slots up to a point (possibly the first feed load at the end of infinite scroll).
Views recorded: 1035774263340589056 4 1035779062639386624 1 1035786250887913472 1 1035789938293035008 1 1035791224082092032 1 1035826847799136256 0 1035835800449212416 1 1035856345047322624 0 1035861065590136832 0 1035871166169960448 0
Another request is made for more boosts:
entities: [{guid: "1035735585072508928", owner_guid: "827283089498578946", timestamp: 1572314606581,…},…]
0: {guid: "1035735585072508928", owner_guid: "827283089498578946", timestamp: 1572314606581,…}
1: {guid: "1035736030619656192", owner_guid: "828233609881067535", timestamp: 1572314713039,…}
2: {guid: "1035745169110028288", owner_guid: "859849246831026193", timestamp: 1572316891970,…}
3: {guid: "1035746647040614400", owner_guid: "800754120263737352", timestamp: 1572317243949,…}
4: {guid: "1035760359545327616", owner_guid: "470964101896478726", timestamp: 1572320513620,…}
5: {guid: "1035764689421815808", owner_guid: "902355209638912004", timestamp: 1572321545745,…}
6: {guid: "1035773532839170048", owner_guid: "813965995910635529", timestamp: 1572323654088,…}
7: {guid: "1035774263340589056", owner_guid: "957099039059353604", timestamp: 1572323828314,…}
load-next: 1572323828314
status: "success"
8 boosts are returned. 8 slots are filled, however only 4 slots are boost feed items, the other 4 being boost rotator items that get recorded as rotator placement instead of feed placement.
added scoped label
added scoped label
added scoped labels
removed label
changed title from Boost slots in feed showing same boost every time to Boost slots in feed showing same boost every time
changed the description
- Developer
Note: Test usage of FeedService in frontend. Subscribed feed uses FeedService with differing parameters to what boost does. Boost always sets offset 0 - need to check implication of this with FeedService.
added scoped label and automatically removed label
added scoped label and automatically removed label
removed label
added scoped label
added scoped label
mentioned in issue engine#1071 (closed)
changed time estimate to 2d
added 1d of time spent at 2019-11-04
- Developer
The complex interactions between async components are difficult to test. I mocked up simple versions of the FeaturedContentService, BlockService and FeedService and debugged the code in StackBlitz.
I found that the offset was allowed to overshoot, causing us to use call
skip(offset)
with an offset value larger than the actual feed array size.There is also another potential issue with the offset where the offset is based on the pre-filtered feed array size.
I can mock some blocks now to test/resolve this functionality.
- Developer
Mocked a blocked owner guid and kept getting the same boost repeated.
- Developer
Confirmed the way the offset is used needs to be reworked...
Adding an
owner_guid
to the filter list so that some of the feed is filtered...rawfeed.length: 5 post entitiesService feed.length: 2
Offset is allowed to exceed the filtered feed length which results in the same item being returned repeatedly.
- Developer
Would be good to coincide this with the iterator change that should prevent empty responses being sent back or I'll need to add some extra code to frontend to handle getting empty response and requesting next page of feed.
Edited by Guy Thouret - Developer
Been around the houses with this one, final issue to resolve is the async pipe code that gets the boost entity from the feed is using an offset value that is not able to be controlled.
Something needs to be introduced into that async pipeline to evaluate if the offset value is valid or not.
Right now we're making 2/3 calls to the async pipe when the offset value is 0 because the offset is not deemed to be valid at that point because of the feed not being valid yet, the pipe returns a promise that is then resolved at some point in the future when the feed data is valid. At that point we already set up the call with offset 0 so the first boost gets repeated in the first chunk of feed slots.
added scoped label and automatically removed label
added scoped label and automatically removed label
added 3d of time spent at 2019-11-07
closed via merge request !629 (merged)
mentioned in commit 7d5d6f16