diff --git a/opensearch/client.go b/opensearch/client.go index 5051407..910775a 100644 --- a/opensearch/client.go +++ b/opensearch/client.go @@ -76,21 +76,23 @@ func (c *Client) SendBulk(ds map[string]*LogDocument) { } type stringSliceReader struct { - src [][]byte - pointer int + src [][]byte } func (b *stringSliceReader) Read(p []byte) (n int, err error) { - for b.pointer < len(b.src) { - sbt := b.src[b.pointer] + for len(b.src) > 0 { + sbt := b.src[0] 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) - p = p[len(sbt):] - b.pointer++ n += len(sbt) - err = nil + p = p[len(sbt):] + b.src = b.src[1:] } err = io.EOF 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{ Body: reader, Header: c.bulkHeader,