| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
- Add scanner_pool.go with tiered buffer pools (1MB, 64KB, 4KB)
- Modify readWithProcessorOptimized to use pooled scanner buffers
- Update tailWithProcessorOptimized to pool 64KB read buffers
- Increase BytesBuffer pool initial capacity from 128B to 4KB
- Add buffer_pool_test.go to benchmark pooling effectiveness
This reduces memory allocations by ~36% in turbo mode by reusing
buffers instead of allocating new ones for each file operation.
All integration tests pass.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- Fixed race condition in periodicTruncateCheck by using context cancellation
- Added turbo mode support to TestDCat2 server configuration
- Removed problematic wait for pending files in readCommand.Start
- Fixed potential panic when truncate channel is closed while goroutine is running
The test now properly enables turbo mode on both client and server, preventing
the timeout issues that occurred when only the client had turbo mode enabled.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
This commit fixes integration test failures in turbo mode where data was not being
fully transmitted before the connection closed. The main issue was that
readWithTurboProcessor was returning too quickly without ensuring all data had been
written to the network stream.
Key changes:
- Add comprehensive trace logging to track data flow in turbo mode
- Fix turbo channel draining mechanism in baseHandler.Read() to wait for all data
- Add proper flushing in TurboNetworkWriter with channel drain synchronization
- Increase flush timeout from 10 to 100 iterations for turbo mode data volumes
- Fix color formatting in serverless mode by processing lines individually
- Add synchronization delays to ensure data transmission completes
The fixes ensure that all data is properly transmitted before connection closure,
resolving TestDcat integration test failures when DTAIL_TURBOBOOST_ENABLE is set.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
The optimized line reader now properly handles the MaxLineLength configuration
which is set to 1024 bytes in integration test mode. This ensures that long
lines are split consistently between regular and turbo boost modes.
- Cache MaxLineLength value to avoid repeated config lookups
- Split lines that exceed MaxLineLength even when they contain newlines
- Handle EOF cases properly when lines exceed the limit
- Reset warning flag when normal lines are encountered
All dcat and dgrep integration tests now pass with DTAIL_TURBOBOOST_ENABLE=yes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- Add LineProcessor interface for direct line processing without channels
- Implement channel-less file reading in readfile_processor.go
- Add optimized reader with 256KB buffering for efficient I/O
- Create GrepLineProcessor for direct writing without intermediate channels
- Fix serverless mode hanging due to stdin pipe detection
- Fix base64 decoding bug (was counting characters instead of arguments)
- Fix message output formatting by adding proper newline handling
Performance improvements:
- Channel-based: 9.00s → Channel-less: 3.42s (62% faster on 100MB files)
- Removed channel synchronization overhead and context switching
- Reduced memory allocations with buffer pooling
Environment variables:
- DTAIL_CHANNELLESS_GREP=yes - Enable channel-less implementation
- DTAIL_OPTIMIZED_READER=yes - Use optimized buffered reader
Known limitation: Inverted grep with context (--invert with --before/--after)
not fully implemented in channel-less mode.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|