로그 전송 body에 버퍼 복사가 제대로 안되던 문제 수정
This commit is contained in:
@ -76,21 +76,23 @@ func (c *Client) SendBulk(ds map[string]*LogDocument) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type stringSliceReader struct {
|
type stringSliceReader struct {
|
||||||
src [][]byte
|
src [][]byte
|
||||||
pointer int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *stringSliceReader) Read(p []byte) (n int, err error) {
|
func (b *stringSliceReader) Read(p []byte) (n int, err error) {
|
||||||
for b.pointer < len(b.src) {
|
for len(b.src) > 0 {
|
||||||
sbt := b.src[b.pointer]
|
sbt := b.src[0]
|
||||||
if len(p) < len(sbt) {
|
if len(p) < len(sbt) {
|
||||||
return
|
b.src[0] = sbt[len(p):]
|
||||||
|
sbt = sbt[:len(p)]
|
||||||
|
copy(p, sbt)
|
||||||
|
return n + len(sbt), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
copy(p, sbt)
|
copy(p, sbt)
|
||||||
p = p[len(sbt):]
|
|
||||||
b.pointer++
|
|
||||||
n += len(sbt)
|
n += len(sbt)
|
||||||
err = nil
|
p = p[len(sbt):]
|
||||||
|
b.src = b.src[1:]
|
||||||
}
|
}
|
||||||
err = io.EOF
|
err = io.EOF
|
||||||
return
|
return
|
||||||
@ -134,7 +136,7 @@ func (c *Client) sendLoop(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
reader := &stringSliceReader{src: sending, pointer: 0}
|
reader := &stringSliceReader{src: sending}
|
||||||
req := osapi.BulkReq{
|
req := osapi.BulkReq{
|
||||||
Body: reader,
|
Body: reader,
|
||||||
Header: c.bulkHeader,
|
Header: c.bulkHeader,
|
||||||
|
|||||||
Reference in New Issue
Block a user