Details

    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 2.0.0
    • Component/s: None
    • Labels:
      None

      Description

      If a batch of mutations comes into a tablet server AND the tablet server just got a new walog then it will sync the walog for each tablet. Below is a sketch of what the tablet server currently does.

      foreach(Tablet t : tabletsInMutationBatch){
          if(!tabletIsDefinedInWalog(t, currentWalog)){
              defineTablet(currentWalog, t); //syncs walog
              addWalogToMetadataTable(currentWalog, t); //syncronous metadata table update
           }
      }
      

      Seems like doing the following would be better. Then no matter how many undefined tablets there are, only one walog sync would be done.

      foreach(Tablet t : tabletsInMutationBatch){
          Set<Tablet> undefined = new HashSet<Tablet>();
          if(!tabletIsDefinedInWalog(t, currentWalog)){
              undefined.add(t);
           }
      }
      
      defineTablets(currentWalog, undefined); //syncs walog after writing all definitions
      addWalogToMetadataTable(currentWalog, undefined); //syncronous metadata table batch write
      

      There is not problem when all tablets in a batch update are defined in the walog. In this case a batch update that contains multiple tablet will only sync the log once after adding all the mutations from all tablets.

      Noticed this while looking into ACCUMULO-2172

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              kturner Keith Turner
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: