로그 전송 body에 버퍼 복사가 제대로 안되던 문제 수정

This commit is contained in:
2025-09-10 01:11:08 +09:00
parent 54eab23eb2
commit e6d8cb6c5a

View File

@ -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,