Better query performance through higher concurrency
API changes:
Stats
structure now includesRangeMaxed
to indicate how much of the query time range had maxed out chunks, meaning CloudWatch Logs Insights returnedLimit
results for that chunk. If this field has a non-zero value it indicates that at least some of the chunks in the query time range likely had more results available than were returned. Typically if dynamic chunk splitting is enabled, this will always be zero. [Issue #4 ]
Big Features:
- Performance is improved significantly by improving concurrency. Chunks are now started and polled in independent goroutines, meaning that chunk starting, which previously had a higher priority, can't block polling of completed chunks. [Issue #9]
Improvements:
- Retry of transient network errors is improved to handle some rare cases. [Issue #13]
- Make further small improvements to the documentation.
- Fix some unit testing concurrency edge cases that failed with extremely low probability like 1 in 20K iterations.
- Fix some goroutine leaks caused by a few unit tests that failed to clean up after themselves, which made debugging painfully difficult in some cases due to large numbers of zombie goroutines.