Skip to content

Fix the graphQL type for container repository tags

🔭 Context

In !46560 (merged), we introduced a GraphQL endpoint to get the details of a container repository.

Among those details, we can get the details of each tag.

The tag has several attributes and one of them is the totalSize which is computed by adding all the sizes of the underlying layers.

This totalSize has been mapped to GraphQL::INT_TYPE in its corresponding GraphQL type.

The problem is that this type has a max.

Guess what happens when tags go over totalSize of ~2GB ?

Yes, you're totally right 💥

This GraphQL endpoint is used by the frontend to build its UI and this ends up in an error screen for the user, see #293845 (closed).

🔬 What does this MR do?

  • Uses GraphQL::Types::BigInt instead of GraphQL::INT_TYPE
    • This will also change the final output of the field to be a string.
  • Updates the related specs
  • Updates the frontend code

👓 Screenshots (strongly suggested)

Screenshot_2020-12-22_at_11.01.27

🛃 Does this MR meet the acceptance criteria?

📇 Conformity

Availability and Testing

👮 Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by David Fernandez

Merge request reports