Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-10832

Using "indexed" PointField for _version_ breaks VersionInfo.getMaxVersionFromIndex

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 6.7, 7.0
    • None

    Description

      If someone configures _version_ using a LongPointField which is indexed="true" then VersionInfo.getMaxVersionFromIndex() will incorrectly assume...

          // if indexed, then we have terms to get the max from
          if (versionField.indexed()) {
            LeafReader leafReader = SlowCompositeReaderWrapper.wrap(searcher.getIndexReader());
            Terms versionTerms = leafReader.terms(versionFieldName);
            Long max = (versionTerms != null) ? LegacyNumericUtils.getMaxLong(versionTerms) : null;
      

      ...which will not work because Point based fields have no Terms.

      potential work around: configuring _version_ to use indexed="false" docValues="true" should cause this branch to be skipped and the existing ValueSource/DocValues based fallback to be used.

      We should either:

      • figure out if an alternative option exists for determining the "max" value of a LongPointField, and if so use that if versionField.indexed() && versionField.getType().isPointField()
      • change VersionInfo.getAndCheckVersionField() to check if the version field IsPointField() and if so error unless indexed="false" && docValues="true"

      Attachments

        1. SOLR-10832.patch
          18 kB
          Chris M. Hostetter
        2. SOLR-10832.patch
          17 kB
          Chris M. Hostetter
        3. SOLR-10832.patch
          13 kB
          Chris M. Hostetter

        Issue Links

          Activity

            People

              hossman Chris M. Hostetter
              hossman Chris M. Hostetter
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: