exit early and panic for non slice on buffer.Put

This commit is contained in:
Krasi Georgiev 2018-02-19 14:31:04 +02:00
parent f2c5913416
commit 9878d66484
2 changed files with 11 additions and 13 deletions

View file

@ -71,16 +71,16 @@ func (p *Pool) Get(sz int) interface{} {
}
// Put adds a slice to the right bucket in the pool.
func (p *Pool) Put(s interface{}) error {
func (p *Pool) Put(s interface{}) {
slice := reflect.ValueOf(s)
if slice.Kind() == reflect.Slice {
for i, size := range p.sizes {
if slice.Cap() > size {
continue
}
p.buckets[i].Put(slice.Slice(0, 0).Interface())
return nil
}
if slice.Kind() != reflect.Slice {
panic(fmt.Sprintf("%+v is not a slice", slice))
}
for i, size := range p.sizes {
if slice.Cap() > size {
continue
}
p.buckets[i].Put(slice.Slice(0, 0).Interface())
}
return fmt.Errorf("%+v is not a slice", slice)
}

View file

@ -699,9 +699,7 @@ mainLoop:
}
}
if err := sl.buffers.Put(b); err != nil {
level.Error(sl.l).Log("msg", "buffer pool error", "err", err)
}
sl.buffers.Put(b)
if scrapeErr == nil {
scrapeErr = appErr