Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENHANCEMENT] Add query param 'metadata_only' on almost all query endpoints #1993

Merged
merged 3 commits into from
May 15, 2024

Conversation

Nexucis
Copy link
Member

@Nexucis Nexucis commented May 14, 2024

This PR is introducing the query param metadata_only on every endpoint excepting the datasource one.

On the datasource endpoint, the query param default and kind are used to filter the list. But for that we need to have access to the spec.

On the home page, when it's loading ~1k dashboards, it takes around 3s to load. With this PR it's taking 500ms.

…points

Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
@@ -21,6 +21,7 @@ import (
)

type Query interface {
GetMetadataOnlyQueryParam() bool
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's open the debate that we all expect: should it be metadata_only or something else?

Food for think:
What if the default was to actually give only the metadata to prevent from dumb requests. You could have full=true for example in all the queries that actually want details

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

partial, full, skip_spec, ignore_spec, ...
Depends on the the default behavior too, "full=true" will not work with the current implem

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that's what I'm saying. Changing the default behaviour to by default having full=false would in a sense give a message that if you use full=true you don't use default and don't complain if it fails or take time to answer, or is paginated.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you get the list of data with no query parameter, you won't expect a partial response data.
What we can do is to provide a pagination so you cannot get everything excepting if you explicitly say it.

metadata_only is at least explicitly saying you will only get the metadata and nothing else.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but before including a pagination, I want to make everything to be able to get all data without crashing Perses.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, just wanted to make sure we explore all the possibilities.

I think I'd tend to be in favor of an API that by default gives everything and light than something very detailed and potentially paginated in the future. But at the end as long as the light mode is available I'm good with any of the default behaviour.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pagination for the win 👍🏽

Copy link
Member

@Gladorme Gladorme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's make UI functions more generic so we can request whatever we want + add api e2e tests with query param

ui/app/src/model/dashboard-client.ts Outdated Show resolved Hide resolved
ui/app/src/model/dashboard-client.ts Show resolved Hide resolved
Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
Copy link
Member

@Gladorme Gladorme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@Nexucis Nexucis merged commit 283b741 into feature/query-optimization May 15, 2024
19 checks passed
@Nexucis Nexucis deleted the nexucis/metadata-list branch May 15, 2024 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants