Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-18165

Investigate removing PriorityQueue usage from KeyRangeConcatIterator

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • 5.0, 5.1
    • Feature/SAI

    Description

      It has been identified during the review of CASSANDRA-18058 that the
      KeyRangeConcatIterator could potentially stop using a PriorityQueue to maintain it's active list of sorted KeyRangeIterators.

      The code suggested by maedhroz is as follows:

      private int i = 0;
      ...
      protected void performSkipTo(PrimaryKey primaryKey)
      {
          while (i < toRelease.size())
          {
              RangeIterator currentIterator = toRelease.get(i);
      
              if (currentIterator.getCurrent().compareTo(primaryKey) >= 0)
                  break;
      
              if (currentIterator.getMaximum().compareTo(primaryKey) >= 0)
              {
                  currentIterator.skipTo(primaryKey);
                  break;
              }
      
              i++;
          }
      }
      ...
      protected PrimaryKey computeNext()
      {
          while (i < toRelease.size())
          {
              RangeIterator currentIterator = toRelease.get(i);
              
              if (currentIterator.hasNext())
                  return currentIterator.next();
              
              i++;
          }
      
          return endOfData();
      }
      

      It was decided that this change would need performance and correctness testing in it's own right would not be included in the original SAI CEP ticket.

      Attachments

        Issue Links

          Activity

            People

              mike_tr_adamson Mike Adamson
              mike_tr_adamson Mike Adamson
              Mike Adamson
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: