commit
30b5cb86d1
@ -16,7 +16,7 @@ func (b *Batch) Delete(key []byte) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Batch) Merge(key, val []byte) {
|
func (b *Batch) Merge(key, val []byte) {
|
||||||
b.s.TimerBatchMerge.Time(func() {
|
b.s.timerBatchMerge.Time(func() {
|
||||||
b.o.Merge(key, val)
|
b.o.Merge(key, val)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -8,13 +8,13 @@ type Iterator struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *Iterator) Seek(x []byte) {
|
func (i *Iterator) Seek(x []byte) {
|
||||||
i.s.TimerIteratorSeek.Time(func() {
|
i.s.timerIteratorSeek.Time(func() {
|
||||||
i.o.Seek(x)
|
i.o.Seek(x)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Iterator) Next() {
|
func (i *Iterator) Next() {
|
||||||
i.s.TimerIteratorNext.Time(func() {
|
i.s.timerIteratorNext.Time(func() {
|
||||||
i.o.Next()
|
i.o.Next()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ type Reader struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reader) Get(key []byte) (v []byte, err error) {
|
func (r *Reader) Get(key []byte) (v []byte, err error) {
|
||||||
r.s.TimerReaderGet.Time(func() {
|
r.s.timerReaderGet.Time(func() {
|
||||||
v, err = r.o.Get(key)
|
v, err = r.o.Get(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.s.AddError("Reader.Get", err, key)
|
r.s.AddError("Reader.Get", err, key)
|
||||||
@ -18,7 +18,7 @@ func (r *Reader) Get(key []byte) (v []byte, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reader) MultiGet(keys [][]byte) (vals [][]byte, err error) {
|
func (r *Reader) MultiGet(keys [][]byte) (vals [][]byte, err error) {
|
||||||
r.s.TimerReaderMultiGet.Time(func() {
|
r.s.timerReaderMultiGet.Time(func() {
|
||||||
vals, err = r.o.MultiGet(keys)
|
vals, err = r.o.MultiGet(keys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.s.AddError("Reader.MultiGet", err, nil)
|
r.s.AddError("Reader.MultiGet", err, nil)
|
||||||
@ -28,14 +28,14 @@ func (r *Reader) MultiGet(keys [][]byte) (vals [][]byte, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reader) PrefixIterator(prefix []byte) (i store.KVIterator) {
|
func (r *Reader) PrefixIterator(prefix []byte) (i store.KVIterator) {
|
||||||
r.s.TimerReaderPrefixIterator.Time(func() {
|
r.s.timerReaderPrefixIterator.Time(func() {
|
||||||
i = &Iterator{s: r.s, o: r.o.PrefixIterator(prefix)}
|
i = &Iterator{s: r.s, o: r.o.PrefixIterator(prefix)}
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reader) RangeIterator(start, end []byte) (i store.KVIterator) {
|
func (r *Reader) RangeIterator(start, end []byte) (i store.KVIterator) {
|
||||||
r.s.TimerReaderRangeIterator.Time(func() {
|
r.s.timerReaderRangeIterator.Time(func() {
|
||||||
i = &Iterator{s: r.s, o: r.o.RangeIterator(start, end)}
|
i = &Iterator{s: r.s, o: r.o.RangeIterator(start, end)}
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -23,14 +23,14 @@ func (s *stats) statsMap() map[string]interface{} {
|
|||||||
ms := map[string]interface{}{}
|
ms := map[string]interface{}{}
|
||||||
|
|
||||||
ms["metrics"] = map[string]interface{}{
|
ms["metrics"] = map[string]interface{}{
|
||||||
"reader_get": TimerMap(s.s.TimerReaderGet),
|
"reader_get": TimerMap(s.s.timerReaderGet),
|
||||||
"reader_multi_get": TimerMap(s.s.TimerReaderMultiGet),
|
"reader_multi_get": TimerMap(s.s.timerReaderMultiGet),
|
||||||
"reader_prefix_iterator": TimerMap(s.s.TimerReaderPrefixIterator),
|
"reader_prefix_iterator": TimerMap(s.s.timerReaderPrefixIterator),
|
||||||
"reader_range_iterator": TimerMap(s.s.TimerReaderRangeIterator),
|
"reader_range_iterator": TimerMap(s.s.timerReaderRangeIterator),
|
||||||
"writer_execute_batch": TimerMap(s.s.TimerWriterExecuteBatch),
|
"writer_execute_batch": TimerMap(s.s.timerWriterExecuteBatch),
|
||||||
"iterator_seek": TimerMap(s.s.TimerIteratorSeek),
|
"iterator_seek": TimerMap(s.s.timerIteratorSeek),
|
||||||
"iterator_next": TimerMap(s.s.TimerIteratorNext),
|
"iterator_next": TimerMap(s.s.timerIteratorNext),
|
||||||
"batch_merge": TimerMap(s.s.TimerBatchMerge),
|
"batch_merge": TimerMap(s.s.timerBatchMerge),
|
||||||
}
|
}
|
||||||
|
|
||||||
if o, ok := s.s.o.(store.KVStoreStats); ok {
|
if o, ok := s.s.o.(store.KVStoreStats); ok {
|
||||||
|
@ -32,14 +32,14 @@ const Name = "metrics"
|
|||||||
type Store struct {
|
type Store struct {
|
||||||
o store.KVStore
|
o store.KVStore
|
||||||
|
|
||||||
TimerReaderGet metrics.Timer
|
timerReaderGet metrics.Timer
|
||||||
TimerReaderMultiGet metrics.Timer
|
timerReaderMultiGet metrics.Timer
|
||||||
TimerReaderPrefixIterator metrics.Timer
|
timerReaderPrefixIterator metrics.Timer
|
||||||
TimerReaderRangeIterator metrics.Timer
|
timerReaderRangeIterator metrics.Timer
|
||||||
TimerWriterExecuteBatch metrics.Timer
|
timerWriterExecuteBatch metrics.Timer
|
||||||
TimerIteratorSeek metrics.Timer
|
timerIteratorSeek metrics.Timer
|
||||||
TimerIteratorNext metrics.Timer
|
timerIteratorNext metrics.Timer
|
||||||
TimerBatchMerge metrics.Timer
|
timerBatchMerge metrics.Timer
|
||||||
|
|
||||||
m sync.Mutex // Protects the fields that follow.
|
m sync.Mutex // Protects the fields that follow.
|
||||||
errors *list.List // Capped list of StoreError's.
|
errors *list.List // Capped list of StoreError's.
|
||||||
@ -73,14 +73,14 @@ func New(mo store.MergeOperator, config map[string]interface{}) (store.KVStore,
|
|||||||
rv := &Store{
|
rv := &Store{
|
||||||
o: kvs,
|
o: kvs,
|
||||||
|
|
||||||
TimerReaderGet: metrics.NewTimer(),
|
timerReaderGet: metrics.NewTimer(),
|
||||||
TimerReaderMultiGet: metrics.NewTimer(),
|
timerReaderMultiGet: metrics.NewTimer(),
|
||||||
TimerReaderPrefixIterator: metrics.NewTimer(),
|
timerReaderPrefixIterator: metrics.NewTimer(),
|
||||||
TimerReaderRangeIterator: metrics.NewTimer(),
|
timerReaderRangeIterator: metrics.NewTimer(),
|
||||||
TimerWriterExecuteBatch: metrics.NewTimer(),
|
timerWriterExecuteBatch: metrics.NewTimer(),
|
||||||
TimerIteratorSeek: metrics.NewTimer(),
|
timerIteratorSeek: metrics.NewTimer(),
|
||||||
TimerIteratorNext: metrics.NewTimer(),
|
timerIteratorNext: metrics.NewTimer(),
|
||||||
TimerBatchMerge: metrics.NewTimer(),
|
timerBatchMerge: metrics.NewTimer(),
|
||||||
|
|
||||||
errors: list.New(),
|
errors: list.New(),
|
||||||
}
|
}
|
||||||
@ -148,42 +148,42 @@ func (s *Store) WriteJSON(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerReaderGet)
|
WriteTimerJSON(w, s.timerReaderGet)
|
||||||
_, err = w.Write([]byte(`,"TimerReaderMultiGet":`))
|
_, err = w.Write([]byte(`,"TimerReaderMultiGet":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerReaderMultiGet)
|
WriteTimerJSON(w, s.timerReaderMultiGet)
|
||||||
_, err = w.Write([]byte(`,"TimerReaderPrefixIterator":`))
|
_, err = w.Write([]byte(`,"TimerReaderPrefixIterator":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerReaderPrefixIterator)
|
WriteTimerJSON(w, s.timerReaderPrefixIterator)
|
||||||
_, err = w.Write([]byte(`,"TimerReaderRangeIterator":`))
|
_, err = w.Write([]byte(`,"TimerReaderRangeIterator":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerReaderRangeIterator)
|
WriteTimerJSON(w, s.timerReaderRangeIterator)
|
||||||
_, err = w.Write([]byte(`,"TimerWriterExecuteBatch":`))
|
_, err = w.Write([]byte(`,"TimerWriterExecuteBatch":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerWriterExecuteBatch)
|
WriteTimerJSON(w, s.timerWriterExecuteBatch)
|
||||||
_, err = w.Write([]byte(`,"TimerIteratorSeek":`))
|
_, err = w.Write([]byte(`,"TimerIteratorSeek":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerIteratorSeek)
|
WriteTimerJSON(w, s.timerIteratorSeek)
|
||||||
_, err = w.Write([]byte(`,"TimerIteratorNext":`))
|
_, err = w.Write([]byte(`,"TimerIteratorNext":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerIteratorNext)
|
WriteTimerJSON(w, s.timerIteratorNext)
|
||||||
_, err = w.Write([]byte(`,"TimerBatchMerge":`))
|
_, err = w.Write([]byte(`,"TimerBatchMerge":`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
WriteTimerJSON(w, s.TimerBatchMerge)
|
WriteTimerJSON(w, s.timerBatchMerge)
|
||||||
|
|
||||||
_, err = w.Write([]byte(`,"Errors":[`))
|
_, err = w.Write([]byte(`,"Errors":[`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -252,13 +252,13 @@ func (s *Store) WriteCSVHeader(w io.Writer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) WriteCSV(w io.Writer) {
|
func (s *Store) WriteCSV(w io.Writer) {
|
||||||
WriteTimerCSV(w, s.TimerReaderGet)
|
WriteTimerCSV(w, s.timerReaderGet)
|
||||||
WriteTimerCSV(w, s.TimerReaderPrefixIterator)
|
WriteTimerCSV(w, s.timerReaderPrefixIterator)
|
||||||
WriteTimerCSV(w, s.TimerReaderRangeIterator)
|
WriteTimerCSV(w, s.timerReaderRangeIterator)
|
||||||
WriteTimerCSV(w, s.TimerWriterExecuteBatch)
|
WriteTimerCSV(w, s.timerWriterExecuteBatch)
|
||||||
WriteTimerCSV(w, s.TimerIteratorSeek)
|
WriteTimerCSV(w, s.timerIteratorSeek)
|
||||||
WriteTimerCSV(w, s.TimerIteratorNext)
|
WriteTimerCSV(w, s.timerIteratorNext)
|
||||||
WriteTimerCSV(w, s.TimerBatchMerge)
|
WriteTimerCSV(w, s.timerBatchMerge)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Store) Stats() json.Marshaler {
|
func (s *Store) Stats() json.Marshaler {
|
||||||
|
@ -36,7 +36,7 @@ func (w *Writer) ExecuteBatch(b store.KVBatch) (err error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("wrong type of batch")
|
return fmt.Errorf("wrong type of batch")
|
||||||
}
|
}
|
||||||
w.s.TimerWriterExecuteBatch.Time(func() {
|
w.s.timerWriterExecuteBatch.Time(func() {
|
||||||
err = w.o.ExecuteBatch(batch.o)
|
err = w.o.ExecuteBatch(batch.o)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.s.AddError("Writer.ExecuteBatch", err, nil)
|
w.s.AddError("Writer.ExecuteBatch", err, nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user