Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-2175

Batch defining tablets in walog

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • None
    • None
    • 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

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kturner Keith Turner
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: