Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-54561

[BP to 7.0.5]- Optimise projector CPU during XATTR processing

    XMLWordPrintable

Details

    • Untriaged
    • 1
    • Unknown

    Description

      In one of the customer issues, it has been observed that projector was spending lot of time during XATTR processing. This ticket is to track the improvements in CPU at projector for XATTR processing

         1050:    if (event.Opcode == transport.DCP_MUTATION ||
               .          .   1051:        event.Opcode == transport.DCP_DELETION) && event.HasXATTR() {
               .          .   1052:        xattrLen := int(binary.BigEndian.Uint32(rq.Body))
               .          .   1053:        xattrData := rq.Body[4 : 4+xattrLen]
               .     29.05s   1054:        event.RawXATTR = make(map[string][]byte, xattrLen)
               .          .   1055:        for len(xattrData) > 0 {
               .          .   1056:            pairLen := binary.BigEndian.Uint32(xattrData[0:])
               .          .   1057:            xattrData = xattrData[4:]
               .          .   1058:            binaryPair := xattrData[:pairLen-1]
               .          .   1059:            xattrData = xattrData[pairLen:]
               .       60ms   1060:            kvPair := bytes.Split(binaryPair, []byte{0x00})
               .          .   1061:            event.RawXATTR[string(kvPair[0])] = kvPair[1]
               .          .   1062:        }
      

      492:    for _, xattr := range ie.xattrs {
               .          .    493:        if _, ok := m.ParsedXATTR[xattr]; !ok {
               .          .    494:            var val interface{}
               .          .    495:            if len(m.RawXATTR[xattr]) != 0 {
               .     21.66s    496:                if err := json.Unmarshal(m.RawXATTR[xattr], &val); err != nil {
               .          .    497:                    arg1 := logging.TagStrUD(xattr)
               .          .    498:                    arg2 := logging.TagStrUD(m.Key)
               .          .    499:                    logging.Errorf("Error parsing XATTR %s for %s: %v",
               .          .    500:                        arg1, arg2, err)
               .          .    501:                } else {
               .       10ms    502:                    m.ParsedXATTR[xattr] = val
               .          .    503:                }
               .          .    504:            }
               .          .    505:        }
               .          .    506:    }
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              varun.velamuri Varun Velamuri
              varun.velamuri Varun Velamuri
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty