// BucketSeqnos will return the current vbucket-timestamp using GET_SEQNOS // command. func (c *GsiClient) BucketSeqnos( bucketn string, hash64 uint64) (*TsConsistency, error) { seqnos, err := common.BucketSeqnos(c.cluster, "default" /*pool*/, bucketn) if err != nil { return nil, err } vbnos := make([]uint16, len(seqnos)) for i := range seqnos { vbnos[i] = uint16(i) } vector := NewTsConsistency(vbnos, seqnos, nil) vector.Crc64 = hash64 return vector, nil }
func GetCurrentKVTs(cluster, pooln, bucketn string, numVbs int) (Timestamp, error) { start := time.Now() seqnos, err := common.BucketSeqnos(cluster, pooln, bucketn) if err != nil { // then log an error and give-up fmsg := "Indexer::getCurrentKVTs Error Connecting to KV Cluster %v" logging.Errorf(fmsg, err) return nil, err } if len(seqnos) != numVbs { fmsg := "BucketSeqnos(): got ts only for %v vbs" return nil, fmt.Errorf(fmsg, len(seqnos)) } ts := NewTimestamp(numVbs) for i, seqno := range seqnos { ts[i] = Seqno(seqno) } elapsed := time.Since(start) logging.Tracef("Indexer::getCurrentKVTs Time Taken %v \n\t TS Returned %v", elapsed, ts) return ts, err }
func GetCurrentKVTs(cluster, pooln, bucketn string, numVbs int) (Timestamp, error) { var seqnos []uint64 fn := func(r int, err error) error { if r > 0 { logging.Warnf("Indexer::getCurrentKVTs error=%v Retrying (%d)", err, r) } seqnos, err = common.BucketSeqnos(cluster, pooln, bucketn) return err } start := time.Now() rh := common.NewRetryHelper(MAX_GETSEQS_RETRIES, time.Millisecond, 1, fn) err := rh.Run() if err != nil { // then log an error and give-up fmsg := "Indexer::getCurrentKVTs Error Connecting to KV Cluster %v" logging.Errorf(fmsg, err) return nil, err } if len(seqnos) != numVbs { fmsg := "BucketSeqnos(): got ts only for %v vbs" return nil, fmt.Errorf(fmsg, len(seqnos)) } ts := NewTimestamp(numVbs) for i, seqno := range seqnos { ts[i] = Seqno(seqno) } elapsed := time.Since(start) logging.Tracef("Indexer::getCurrentKVTs Time Taken %v \n\t TS Returned %v", elapsed, ts) return ts, err }