operator-framework / operator-framework/java-operator-sdk

Colliding root-level version.properties can misreport the SDK version

Ouverte
#3,627 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Java
Étoiles
944
Forks
242
Merge moyen
1 j 4 h
PR mergées (30 j)
43

Description

Bug Report

What did you do?

Built an operator as a single shaded jar depending on both io.javaoperatorsdk:operator-framework-core (5.6.1) and io.javaoperatorsdk:kubernetes-webhooks-framework-core (3.0.4). Both artifacts generate a root-level version.properties via the git-commit-id-maven-plugin, so the two files collide at the same jar entry path.

What did you expect to see?

The operator startup log reports operator-framework-core's commit id and build time, which Utils.loadFromProperties() reads from version.properties.

What did you see instead? Under which circumstances?

ClassLoader.getResourceAsStream returns the first match, so Utils can silently report the webhooks framework's commit id and build time as the SDK version. This only surfaces when the jars are merged into one (or the classpath puts the webhooks jar first), which is probably why it went unnoticed: setups that keep the jars separate, such as Quarkus, usually resolve the operator-framework-core copy first.

Possible Solution

Give each artifact a uniquely named properties file:

  • operator-framework-core: operator-sdk-version.properties, updating the lookup in Utils.loadFromProperties() (its only reader)
  • kubernetes-webhooks-framework-core: for example kubernetes-webhooks-framework-version.properties (nothing reads it today, so it is only a rename); I can file a companion issue there

Happy to contribute PRs (for both repos if needed).

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par localiser Utils.loadFromProperties() et la configuration de git-commit-id-maven-plugin qui crée version.properties. Renommez la ressource de operator-framework-core et mettez à jour sa recherche, puis construisez un shaded jar contenant les deux artefacts du framework et vérifiez que le journal de démarrage indique l’identifiant du commit et l’heure de build de l’operator framework.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java, kubernetes
Domaine
build-system
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
72/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.