Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-1632

ExtractText throws NullPointerException if Regular Expression has optional Capturing Group that is not present

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.6.0
    • None
    • None

    Description

      If we use ExtractText and configure it with a regular expression that contains a Capturing Group that is "optional" (ends with a ?), and the regex matches some content where the capturing group is not present, then it will throw a NullPointerException

      Conrad Crampton on the users mailing list reported:
      Hi,
      I don’t know if this is expected behaviour but I think I understand why this is happening now. I have a regexp in the ExtractText processors viz:
      (?s:^.+: (\d\d?)(\w\w\w)(\d

      {4}

      ) ([\d ]\d:\d\d:\d\d) Product=(.?) OriginIP=(.?) Origin=(.?) Action=(.?) SIP=(.?) Source=(.?) SPort=(\d+?) DIP=(.) Destination=(.?) DPort=(\d+?) Protocol=(.?)(?: ICMPType=(.?) ICMPCode=(.?))? IFName=(.?) IFDirection=(.?) Reason=(.?) Rule=(.?) PolicyName=(.?) Info=(.?) XlateSIP=(.?) XlateSPort=([\d]|?) XlateDIP=(.?) XlateDPort=([\d]+|?)(.*)$)
      With this (?: ICMPType=(.?) ICMPCode=(.?))? the problem I think. Because I have made a non capturing matching group optional, for those log lines that don’t have this section matching the dynamic variable can’t set the index correctly as the match is returning null for these capture groups. Obviously I haven’t gone too deep into the code, but if I have a RouteOnContent processor before this testing for this string and remove this from regexp (and have two ExtractText processors) then it works. It appeared that all the NPE were thrown for those lines that didn’t match the optional matching group.
      Has this been observed before?
      Thanks
      Conrad
      — In looking at the code this line looks offensive:
      https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExtractText.java#L325

      Attachments

        Activity

          People

            markap14 Mark Payne
            markap14 Mark Payne
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: