soundcloud / soundcloud/api

Incomplete / inconsistent data returned from track reposts endpoint during outage

Open
#69 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
JavaScript
Stars
254
Forks
53
PR merge metrics
No merged PRs in 30d

Description

Title: Incomplete / Invalid data returned from track reposts endpoint during issues last night

Issue found of: July 3th, 2021
Issue resolved of July 4th, 2021

Endpoint(s):

GET https://api.soundcloud.com/tracks/1078586815/reposters?page_size=200&client_id=XXX

Scope(s):
  • None (application is not using authentication i.e., implicit flow)
Steps to reproduce:
curl --request GET \
  --url 'https://api.soundcloud.com/tracks/1078586815/reposters?page_size=200&client_id=XXX'
Expected behaviour:

A list of reposters as described in the documentation, and where the list matches what is reflected on the website for this track (as an example - this is the track from the above ID - https://soundcloud.com/keepdreaminkofi/sell-my-soul-3/reposts).

I'm aware of issues at SoundCloud last night - https://status.soundcloud.com/

However, last night during the outage we were getting a valid 200 OK response, but with empty collection of data. This is a pretty critical error from a data consistency point of view. If the data upstream cannot be fetched, this method should not be returning a valid response with an empty data collection. Rather, as an API consumer I expect the call to fail via 5XX errors.

We cannot assume an empty collection to be an error condition as this is a perfectly valid condition in normal operation.

Actual behaviour:

200 OK but with empty collection

This issue now appears to be resolved, but this caused us problems when issues were ongoing last night.

It would be great if this could be investigated for future! Many thanks!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the documented curl request against the track reposts endpoint and compare its response with the expected reposter list during an upstream outage. Review the API behavior for unavailable upstream data; done means the endpoint no longer presents an outage as a successful empty collection, with the failure behavior documented or covered by an appropriate test.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.