Eendagsbug

Als programmeur loop je regelmatig tegen problemen aan in de producten of libraries die je gebruikt. Meestal is de oplossing simpel: je typt de foutmelding die je krijgt in bij een zoekmachine, en binnen een paar tellen heb je de oorzaak gevonden. Of je gaat rechtstreeks naar Stack Overflow. Mocht dat niet helpen dan kun je de bugtracker van het product nakijken, of is, in het geval van Java open source, GrepCode je vriend.

Maar soms. Soms loop je tegen een probleem aan dat zich niet zo makkelijk gewonnen geeft. De ergste zijn degenen die ik de one hit wonders noem: je typt de foutmelding in, en precies 1 iemand heeft hetzelfde probleem gehad als jij en heeft er melding van gemaakt in een bugtracker. En dan staat er geen oplossing bij. Of, ook vervelend, er staan alleen 3 reacties van mensen die precies hetzelfde hebben gevonden.

Tegen zo’n bug liep ik gisteren aan. Het voorgaande was een lange aanloop om de oplossing hier te delen, zodat andere mensen er hun voordeel mee kunnen doen.

Bij het koppelen van onze Jenkins build server aan een nieuwe Artifactory server kreeg ik bij elke build job de volgende foutmelding:

FATAL: java.lang.IllegalArgumentException: artifactoryServer cannot be null
java.lang.RuntimeException: java.lang.IllegalArgumentException: artifactoryServer cannot be null
	at org.jfrog.hudson.maven3.extractor.MavenExtractorEnvironment.buildEnvVars(MavenExtractorEnvironment.java:151)
	at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:852)
Caused by: java.lang.IllegalArgumentException: artifactoryServer cannot be null
	at org.jfrog.hudson.util.PublisherContext$Builder.build(PublisherContext.java:168)
	... 9 more

Ga op deze foutmelding zoeken, en je vindt welgeteld 1 relevante hit, die verwijst naar de Jenkins Jira: Issue JENKINS-14268. Zonder oplossing, natuurlijk.

Dit verhelpen bleek uiteindelijk simpel: als je de url van een Artifactory server wil wijzigen in Jenkins, doe dat dan door de oude Artifactory server configuratie te verwijderen, en vervolgens een nieuwe Artifactory server configuratie aan te maken. Ik had zelf over de oude url heengetypt, en dat gaf deze foutmelding. De vraag of dit een bug is of een gebruikersfout laat ik aan anderen over.