Extremely slow cloning when using large SemVer range
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:
- We use a monorepo style structure
GitRepositoriesdo not support parsing and extracting tags likeImagePolicies- 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
- you can parse+extract SemVer in OCI tags like
- 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:
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)
- Allow SemVer pattern extractions like
ImagePolicies. This way we don't have to (ab)use git tags like this. - 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
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fluxcd/source-controller
-
Improve documentation on debugging the controller locallyQuizá libre de nuevo @Bryandero98 la tomó hace 28 días y no hay ningún pull request abierto. Abiertoarea/docs good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
fluxcd/source-controller#666 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
area/oci enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
fluxcd/source-controller#2180 ·
Los mantenedores suelen responder en 1 día
-
`OCIRepository`/cosign verification: support TSA-only trusted roots (no transparency log) for private Sigstore instances like GitHub Artifact AttestationsPosiblemente ocupada @stealthybox la tomó hace 142 días. Abiertoarea/oci area/security enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
fluxcd/source-controller#2167 · 4 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
fluxcd/source-controller#2150 ·
Los mantenedores suelen responder en 1 día
-
GitRepository `.spec.ref.commit` + `.spec.ref.branch` does not shallow clone, contrary to the docsAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 42/100
fluxcd/source-controller#2146 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de fluxcd/source-controller
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
os: RawConn methods of a closed File return internal/poll.ErrFileClosing instead of ErrClosedAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
[Bug]: Bedrock invoke-with-response-stream reports `stop_reason: "end_turn"` for tool-use turnsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
oalders/clodhopper#162 ·
Los mantenedores suelen responder en 1 día
-
component/server severity/minor type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día