Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60537

Exception when using multiple labels on a pod template

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • kubernetes-plugin
    • None
    • 1.22.6, 1.23.1

      Affects 1.22.1

      When using a pod template that has multiple labels defined, you get the following exception.

      https://github.com/jenkinsci/kubernetes-plugin/pull/640#commitcomment-36483725

      java.lang.IllegalArgumentException: duplicate key: jenkins/label
      	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115)
      	at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:72)
      	at com.google.common.collect.ImmutableMap$Builder.fromEntryList(ImmutableMap.java:245)
      	at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:231)
      	at org.csanchez.jenkins.plugins.kubernetes.PodTemplate.getLabelsMap(PodTemplate.java:387)
      	at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.addProvisionedSlave(KubernetesCloud.java:599)
      	at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.provision(KubernetesCloud.java:542)
      	at hudson.slaves.NodeProvisioner$StandardStrategyImpl.apply(NodeProvisioner.java:729)
      	at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:334)
      	at hudson.slaves.NodeProvisioner.access$900(NodeProvisioner.java:64)
      	at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:823)
      	at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:70)
      	at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      

          [JENKINS-60537] Exception when using multiple labels on a pod template

          Alexander Bodor added a comment - - edited

          Also affected by this at work, had to pin the plugin down to 1.22.0 for the time being, until this gets solved. 

          Additional information: In versions 1.22.2, 1.22.3 and 1.22.4 (latest at the time of this writing) of the kubernetes plugin, we're getting a different error which might have also been introduced by this change (a bit of speculation on my side, but so it seems), so those newer versions are also unusable right now: 

          Jan 07, 2020 11:55:46 AM WARNING org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision
          Failed to count the # of live instances on Kubernetes
          io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/edited-namespace/pods?labelSelector=jenkins%3Dslave%2Cjenkins%2Flabel%3Dkubernetes-tools-small%20agent. Message: found 'agent', expected: ',' or 'end of string'. Received status: Status(apiVersion=v1, code=400, details=null, kind=Status, message=found 'agent', expected: ',' or 'end of string', metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=BadRequest, status=Failure, additionalProperties={}).
          	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:510)
          	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:449)
          	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:413)
          	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:372)
          	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:354)
          	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:153)
          	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:620)
          	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:69)
          	at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.getActiveSlavePods(KubernetesCloud.java:608)
          	at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.addProvisionedSlave(KubernetesCloud.java:593)
          	at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.provision(KubernetesCloud.java:535)
          	at io.jenkins.plugins.kubernetes.NoDelayProvisionerStrategy.apply(NoDelayProvisionerStrategy.java:64)
          	at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:332)
          	at hudson.slaves.NodeProvisioner.access$900(NodeProvisioner.java:63)
          	at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:819)
          	at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:70)
          	at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58)
          	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
          	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
          	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
          	at java.lang.Thread.run(Thread.java:748) 

           

          K8s endpoint in AWS EKS 1.13 (if it matters): 

          Server Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.12-eks-eb1860", GitCommit:"eb1860579253bb5bf83a5a03eb0330307ae26d18", GitTreeState:"clean", BuildDate:"2019-12-23T08:58:45Z", GoVersion:"go1.11.13", Compiler:"gc", Platform:"linux/amd64"} 

           

          Agent pod labels:

          Labels:             jenkins=slave
                              jenkins/agent=true
                              jenkins/kubernetes-tools-small=true 

           

          Alexander Bodor added a comment - - edited Also affected by this at work, had to pin the plugin down to 1.22.0 for the time being, until this gets solved.  Additional information: In versions 1.22.2, 1.22.3 and 1.22.4 (latest at the time of this writing) of the kubernetes plugin, we're getting a different error which might have also been introduced by this change (a bit of speculation on my side, but so it seems), so those newer versions are also unusable right now:  Jan 07, 2020 11:55:46 AM WARNING org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision Failed to count the # of live instances on Kubernetes io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https: //kubernetes. default .svc/api/v1/namespaces/edited-namespace/pods?labelSelector=jenkins%3Dslave%2Cjenkins%2Flabel%3Dkubernetes-tools-small%20agent. Message: found 'agent' , expected: ',' or 'end of string' . Received status: Status(apiVersion=v1, code=400, details= null , kind=Status, message=found 'agent' , expected: ',' or 'end of string' , metadata=ListMeta(_continue= null , remainingItemCount= null , resourceVersion= null , selfLink= null , additionalProperties={}), reason=BadRequest, status=Failure, additionalProperties={}). at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:510) at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:449) at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:413) at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:372) at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:354) at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:153) at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:620) at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:69) at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.getActiveSlavePods(KubernetesCloud.java:608) at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.addProvisionedSlave(KubernetesCloud.java:593) at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud.provision(KubernetesCloud.java:535) at io.jenkins.plugins.kubernetes.NoDelayProvisionerStrategy.apply(NoDelayProvisionerStrategy.java:64) at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:332) at hudson.slaves.NodeProvisioner.access$900(NodeProvisioner.java:63) at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:819) at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:70) at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:58) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang. Thread .run( Thread .java:748)   K8s endpoint in AWS EKS 1.13 (if it matters):  Server Version: version.Info{Major: "1" , Minor: "13+" , GitVersion: "v1.13.12-eks-eb1860" , GitCommit: "eb1860579253bb5bf83a5a03eb0330307ae26d18" , GitTreeState: "clean" , BuildDate: "2019-12-23T08:58:45Z" , GoVersion: "go1.11.13" , Compiler : "gc" , Platform: "linux/amd64" }   Agent pod labels: Labels: jenkins=slave jenkins/agent= true jenkins/kubernetes-tools-small= true  

            vlatombe Vincent Latombe
            vlatombe Vincent Latombe
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: