Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 1.8.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

        Activity

        There are no comments yet on this issue.

          People

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

            Dates

            • Created:
              Updated:

              Development