Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Extremely slow cloning when using large SemVer range

Abierto
#1,769 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
go
Área
performance

Línea de trabajo

Empieza leyendo el código de clonación en fluxcd/pkg/git y compara cómo se gestionan los rangos grandes de SemVer con el comportamiento de extracción de tags de ImagePolicies descrito en el issue. Reproduce la discrepancia con un GitRepository usando un rango grande y el pequeño número de tags indicado, y después perfila el uso de CPU de source-controller. Se considera terminado si se admite la extracción de patrones SemVer para GitRepositories o si se identifica y resuelve el cuello de botella en la comparación de rangos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Some info to set the stage:

  1. We use a monorepo style structure
  2. GitRepositories do not support parsing and extracting tags like ImagePolicies
    • you can parse+extract SemVer in OCI tags like my-app-v1.2.3 => 1.2.3
    • you must use exclusively plain SemVer tags for GitRepositories
  3. To get around this deficiency, we've allocated chunks of major SemVer git tags to projects in the repo.
    • project-1 gets 0.0.0 -> 999999.x.x
    • project-2 gets 1000000.0.0 -> 1999999.x.x
    • ...

This means when a team wants to deploy a dev version of kustomizations that control their app, it ends up looking something like this:

---
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: project-1-dev
  namespace: flux-system
spec:
  interval: 1m0s
  ref:
    semver: '>=1000000 <2000000'
  secretRef:
    name: example-ssh-key
  url: ssh://[email protected]/owner/monorepo.git

This has been working very well for a long time, but there is a huge performance problem when the SemVar range is that big. I want to be clear, projects do not actually use that many tags (as writing, the most I see is ~60 majors).

Here is a graph of the enormous performance discrepancy:
Image
In the graph you can see that dev cloning is 50-75x slower and this project in particular only has 49 tags. On top of this it also causes relatively high CPU usage from the source-controller pod.

Potential solutions (in order of preference)
  1. Allow SemVer pattern extractions like ImagePolicies. This way we don't have to (ab)use git tags like this.
  2. Figure out why it takes so long to compare SemVer tags. I looked around in fluxcd/pkg/git but nothing in the cloning code stood out to me.
Lenguaje dominante
Go
Estrellas
283
Forks
258
Merge medio
1 d 17 h
PR fusionados (30 d)
15

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fluxcd/source-controller

Todos los issues de fluxcd/source-controller

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.