// StartVbStreams implements Feeder{} interface. func (bdcp *bucketDcp) StartVbStreams( opaque uint16, reqTs *protobuf.TsVbuuid) error { var err error if bdcp.bucket != nil { bdcp.bucket.Refresh() } vbnos := c.Vbno32to16(reqTs.GetVbnos()) vbuuids, seqnos := reqTs.GetVbuuids(), reqTs.GetSeqnos() for i, vbno := range vbnos { snapshots := reqTs.GetSnapshots() flags, vbuuid := uint32(0), vbuuids[i] start, end := seqnos[i], uint64(0xFFFFFFFFFFFFFFFF) snapStart, snapEnd := snapshots[i].GetStart(), snapshots[i].GetEnd() e := bdcp.dcpFeed.DcpRequestStream( vbno, opaque, flags, vbuuid, start, end, snapStart, snapEnd) if e != nil { err = e } // FIXME/TODO: the below sleep avoid back-to-back dispatch of // StreamRequest to DCP, which seem to cause some problems. time.Sleep(time.Millisecond) } return err }