ShivamSharma43 opened a new issue, #9320:
URL: https://github.com/apache/devlake/issues/9320

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/devlake/issues?q=is%3Aissue) and found no 
similar issues.
   
   ### What happened
   
   `GET /plugins/tempo/connections/{connectionId}/teams` (`GetTeams` in 
`backend/plugins/tempo/api/connection.go`) always fails with `failed to 
unmarshal teams response`.
   
   It decodes the `GET /4/teams` response into `[]models.TempoTeamResponse`, 
but Tempo v4 returns a page object (`PageableTeam`: `self`, `metadata`, 
`results`), not an array. On `main` (84e3707), decoding such a body with 
`api.UnmarshalResponse` into `[]models.TempoTeamResponse` fails with `error 
decoding response from https://api.tempo.io/4/teams: raw response: 
{"self":...,"metadata":{...},"results":[...]}`. Even if it decoded, it would 
only return the first page (Tempo's default `limit` is 50).
   
   The remote scope search (`searchTempoRemoteTeams` in `api/remote.go`, behind 
`search-remote-scopes`) has the same single-request issue. It sends one `GET 
/4/teams?name=...` without `offset`/`limit`, so it only looks at the first 50 
teams the API returns. Its own `page`/`pageSize` paging then works on that 
list, so if more than 50 teams match, the later ones can't be found.
   
   ### What do you expect to happen
   
   `GET /plugins/tempo/connections/{id}/teams` returns every team of the Tempo 
instance, and the remote scope search looks at every matching team. Both should 
follow `metadata.next` like `listTempoRemoteTeams` and the collectors do since 
#9307.
   
   ### How to reproduce
   
   1. Create a Tempo connection.
   2. `curl http://localhost:8080/plugins/tempo/connections/1/teams`: the 
request fails with `failed to unmarshal teams response`.
   
   ### Anything else
   
   Proposed fix (I have a PR ready): add a `listAllTempoTeams` helper in 
`api/remote.go` that pages through `GET /4/teams` with `offset`/`limit` until 
`metadata.next` is absent. Use it in `GetTeams` and in 
`searchTempoRemoteTeams`, and add unit tests with a fake API client.
   
   ### Version
   
   main
   
   ### Are you willing to submit PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to