Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Fixed
    • email-ext-plugin
    • None
    • jenkins 1.477
      email-ext 2.24.1

    Description

      For sender i have "${EMAIL_VAR} User@domain.com" and have NPE.
      Probably problem appeared after upgrading to 2.24.1 and token plugin...
      Email was triggered for: Success
      Email was triggered for: Fixed
      Trigger Success was overridden by another trigger and will not send an email.
      Sending email for trigger: Fixed
      ERROR: Could not send email as a part of the post-build publishers.
      java.lang.NullPointerException
      at java.util.regex.Matcher.getTextLength(Matcher.java:1140)
      at java.util.regex.Matcher.reset(Matcher.java:291)
      at java.util.regex.Matcher.<init>(Matcher.java:211)
      at java.util.regex.Pattern.matcher(Pattern.java:888)
      at hudson.plugins.emailext.plugins.ContentBuilder$Tokenizer.<init>(ContentBuilder.java:171)
      at hudson.plugins.emailext.plugins.ContentBuilder.replaceTokensWithContent(ContentBuilder.java:106)
      at hudson.plugins.emailext.plugins.ContentBuilder.replaceTokensWithContent(ContentBuilder.java:124)
      at hudson.plugins.emailext.plugins.ContentBuilder.transformText(ContentBuilder.java:88)
      at hudson.plugins.emailext.ExtendedEmailPublisher.getContent(ExtendedEmailPublisher.java:540)
      at hudson.plugins.emailext.ExtendedEmailPublisher.createMail(ExtendedEmailPublisher.java:363)
      at hudson.plugins.emailext.ExtendedEmailPublisher.sendMail(ExtendedEmailPublisher.java:273)
      at hudson.plugins.emailext.ExtendedEmailPublisher._perform(ExtendedEmailPublisher.java:265)
      at hudson.plugins.emailext.ExtendedEmailPublisher.perform(ExtendedEmailPublisher.java:225)
      at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36)
      at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717)
      at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:692)
      at hudson.model.Build$BuildExecution.cleanUp(Build.java:192)
      at hudson.model.Run.execute(Run.java:1546)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:236)
      Finished: SUCCESS

      Attachments

        Activity

          slide_o_mix Alex Earl added a comment -

          What are you expecting to happen? What is the value of ${EMAIL_VAR}?

          slide_o_mix Alex Earl added a comment - What are you expecting to happen? What is the value of ${EMAIL_VAR}?

          Just in ${var} just array of mails. "def@domain.com sdf@domain.com". This var is entered in global jenkins settings and space separated.

          integer Kanstantsin Shautsou added a comment - Just in ${var} just array of mails. "def@domain.com sdf@domain.com". This var is entered in global jenkins settings and space separated.
          slide_o_mix Alex Earl added a comment -

          I have the exact same setup and don't have this issue. Can you upload an example config.xml for a job (scrubbed of any personal/company info) so I can see if there is anything amiss?

          slide_o_mix Alex Earl added a comment - I have the exact same setup and don't have this issue. Can you upload an example config.xml for a job (scrubbed of any personal/company info) so I can see if there is anything amiss?

          config

          integer Kanstantsin Shautsou added a comment - config

          This construction work ok in other jobs, but in this i not found reason of NPE.

          integer Kanstantsin Shautsou added a comment - This construction work ok in other jobs, but in this i not found reason of NPE.
          slide_o_mix Alex Earl added a comment -

          Can you isolate on which token is causing the issue? I don't think its the item in the recipient list. It could be the FILE or ENV tokens.

          slide_o_mix Alex Earl added a comment - Can you isolate on which token is causing the issue? I don't think its the item in the recipient list. It could be the FILE or ENV tokens.
          integer Kanstantsin Shautsou added a comment - - edited

          It seems i found the problem: i have input string parameter $hWorkspace + custom workspace set to this variable. Current workspace browser shows $JENKINS_HOME content, so i think something wrong with variables overload.

          integer Kanstantsin Shautsou added a comment - - edited It seems i found the problem: i have input string parameter $hWorkspace + custom workspace set to this variable. Current workspace browser shows $JENKINS_HOME content, so i think something wrong with variables overload.

          Hehe
          Job A has parametrized build plugin that executes Job B with variable WORKSPACE=$WORKSPACE, it's ok passed.
          Job B has input string $fWorkspace + custom workspace set to $fWorkspace (this variable wasn't passed to job B, but WORKSPACE was injected). After all i got in build.xml workspace = "/opt/jenkins" (it's $JENKINS_HOME). But, job B's shell execution work correctly with $WORKSPACE variable

          integer Kanstantsin Shautsou added a comment - Hehe Job A has parametrized build plugin that executes Job B with variable WORKSPACE=$WORKSPACE, it's ok passed. Job B has input string $fWorkspace + custom workspace set to $fWorkspace (this variable wasn't passed to job B, but WORKSPACE was injected). After all i got in build.xml workspace = "/opt/jenkins" (it's $JENKINS_HOME). But, job B's shell execution work correctly with $WORKSPACE variable

          So, there are 2 problems:
          1) how parametrized build plugin work with vars
          2) NPE on ${FILE, path="file_on_fs"} gives NPE if there file doesn't exist.

          Can you try reproduce/check on your jenkins 2) ?

          integer Kanstantsin Shautsou added a comment - So, there are 2 problems: 1) how parametrized build plugin work with vars 2) NPE on ${FILE, path="file_on_fs"} gives NPE if there file doesn't exist. Can you try reproduce/check on your jenkins 2) ?
          slide_o_mix Alex Earl added a comment -

          I can't say anything about the parameterized build plugin works, but I can look at the NPE if the file doesn't exist.

          slide_o_mix Alex Earl added a comment - I can't say anything about the parameterized build plugin works, but I can look at the NPE if the file doesn't exist.

          Yeap, skip 1), i also not know all nuances.

          integer Kanstantsin Shautsou added a comment - Yeap, skip 1), i also not know all nuances.
          slide_o_mix Alex Earl added a comment -

          Your file is relative to the root of the workspace, correct?

          slide_o_mix Alex Earl added a comment - Your file is relative to the root of the workspace, correct?

          yes, ext-email plugin calculates it from workspace... But workspace tag in build.xml was different from WORKSPACE, because of variable overload...

          integer Kanstantsin Shautsou added a comment - yes, ext-email plugin calculates it from workspace... But workspace tag in build.xml was different from WORKSPACE, because of variable overload...
          slide_o_mix Alex Earl added a comment -

          variable overload? apparently, the content token for FILE is meant to return a null if the file doesn't exist or something similar (if the file can't be accessed in the workspace for some reason). I'll see if I can change it so that it just returns an error string saying that the item doesn't exist, does this work?

          slide_o_mix Alex Earl added a comment - variable overload? apparently, the content token for FILE is meant to return a null if the file doesn't exist or something similar (if the file can't be accessed in the workspace for some reason). I'll see if I can change it so that it just returns an error string saying that the item doesn't exist, does this work?

          Code changed in jenkins
          User: Alex Earl
          Path:
          src/main/java/hudson/plugins/emailext/plugins/content/WorkspaceFileContent.java
          src/test/java/hudson/plugins/emailext/plugins/content/WorkspaceFileContentTest.java
          http://jenkins-ci.org/commit/email-ext-plugin/33dbcc6d4248098314959809695276bf2bcf5e80
          Log:
          Fix JENKINS-15008

          Make the message clear as to what is missing

          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Alex Earl Path: src/main/java/hudson/plugins/emailext/plugins/content/WorkspaceFileContent.java src/test/java/hudson/plugins/emailext/plugins/content/WorkspaceFileContentTest.java http://jenkins-ci.org/commit/email-ext-plugin/33dbcc6d4248098314959809695276bf2bcf5e80 Log: Fix JENKINS-15008 Make the message clear as to what is missing

          I mean that i not sure what absolute path ${FILE} tried to load because my workspace path was strange.
          Yes, there shouldn't be NPE, if file doesn't exist. Btw, ${ENV} doesn't show anything in output if var=$VAR not exist.

          integer Kanstantsin Shautsou added a comment - I mean that i not sure what absolute path ${FILE} tried to load because my workspace path was strange. Yes, there shouldn't be NPE, if file doesn't exist. Btw, ${ENV} doesn't show anything in output if var=$VAR not exist.
          slide_o_mix Alex Earl added a comment -

          I'd rather put an error in so the user knows that the file was not found correctly in the path and what path they were trying to access.

          slide_o_mix Alex Earl added a comment - I'd rather put an error in so the user knows that the file was not found correctly in the path and what path they were trying to access.

          Yes, thanks. Will be tested on next release. Do i need to press resolved?

          integer Kanstantsin Shautsou added a comment - Yes, thanks. Will be tested on next release. Do i need to press resolved?
          slide_o_mix Alex Earl added a comment -

          Not until it is released and tested.

          slide_o_mix Alex Earl added a comment - Not until it is released and tested.
          slide_o_mix Alex Earl added a comment -

          Made the FILE token return an error if the file doesn't exist.

          slide_o_mix Alex Earl added a comment - Made the FILE token return an error if the file doesn't exist.

          People

            slide_o_mix Alex Earl
            integer Kanstantsin Shautsou
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: