| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Task: 4e6d7744-3f5c-4880-9e5d-368ece96470d
|
|
Task: 536d2467-2b3d-4b4a-a843-99c96d535cbb
|
|
Task: 026363ea-d985-49a1-801e-bfbbe25bb6b8
|
|
Task: 45cfde84-3b56-4821-bc84-b8e9a90d2ca4
|
|
|
|
|
|
|
|
Modernize network dialing to use Go's context-aware patterns for better
cancellation support and connection reliability.
Changes:
- Update Go version from 1.24 to 1.25 in go.mod
- Replace ssh.Dial with net.Dialer.DialContext + ssh.NewClientConn
for SSH client connections in serverconnection.go
- Add TCP KeepAlive (30s) for SSH connection health monitoring
- Implement context-aware dialing for SSH agent connections in ssh.go
- Improve error messages to distinguish dial vs SSH handshake failures
- Update AGENTS.md with integration test requirements
Benefits:
- Context cancellation now properly affects connection establishment
- TCP KeepAlive prevents silent connection failures
- Better integration with Go's cancellation patterns
- Improved reliability for distributed systems
All integration tests pass with race detection enabled.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
This commit adds two major features and fixes:
1. SSH Agent Key Selection:
- Add --agentKeyIndex flag to select specific SSH agent key (0-based)
- Solves "too many authentication failures" with multiple SSH keys
- Default -1 uses all keys (backwards compatible)
- Available in dtail, dcat, dgrep, dmap commands
2. MapReduce Outfile Fixes:
- CSV files now written at every interval, not just on exit
- Proper signal handling (SIGTERM/SIGINT) with graceful shutdown
- 5-second grace period for cleanup before force exit
- Fixes issue where outfile remained as .tmp during execution
Usage:
dtail --servers host --agentKeyIndex 0 --query '...' outfile results.csv
This is particularly useful with YubiKey/hardware tokens where many
keys are loaded in the SSH agent, and for monitoring MapReduce results
in real-time as they're computed.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
|
|
|
- Add explicit interface satisfaction checks (var _ Interface = (*Type)(nil)) for compile-time verification:
- TurboWriter implementations (DirectTurboWriter, TurboChannelWriter)
- Processor implementations (GrepLineProcessor, ChannellessLineProcessor)
- Parser implementations (genericParser, csvParser, genericKVParser, custom parsers, mimecastParser)
- Logger implementations (file, stdout)
- Handler implementations (ServerHandler, ClientHandler)
- Connector implementations (Serverless, ServerConnection)
- SSH callback implementations (KnownHostsCallback)
- Improve error handling with context wrapping (%w):
- SSH operations: GeneratePrivateRSAKey, Agent
- Query parsing: Query.parse
- SSH client connections: dial, session, handle methods
- Fix receiver consistency:
- Convert Query.String() from value to pointer receiver
- Convert Outfile.String() from value to pointer receiver
- Convert all KnownHostsCallback methods to pointer receivers
- Convert mapCommand.Start() to pointer receiver
- Reorganize file structure for better clarity:
- internal/io/dlog/dlog.go: Move type definition before public functions
- internal/mapr/token.go: Reorganize helper functions after public ones
- Add documentation comments:
- Query.String() method
- Outfile.String() method
- Regex.String() method
- Improve config variable documentation
All unit tests and integration tests pass.
Amp-Thread-ID: https://ampcode.com/threads/T-019c0b08-0eeb-705d-a1f7-31bb764b659a
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
Add comprehensive unit tests for DirectTurboWriter and TurboChannelWriter:
- DirectTurboWriter: serverless plain mode, network modes, server messages
- TurboChannelWriter: line data, channel full handling, server messages
- Stats tracking verification
Note: Some tests skipped due to global config/dlog dependencies:
- Colored mode tests (require color config)
- DirectLineProcessor tests (require dlog initialization)
These are covered by integration tests.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Split functions exceeding 50 lines into smaller, focused helpers:
- DirectTurboWriter.WriteLineData (~97 lines) split into:
- WriteLineData (dispatcher, 9 lines)
- writeServerlessLine (serverless mode, 48 lines)
- writeNetworkLine (network mode, 40 lines)
- TurboNetworkWriter.WriteLineData (~60 lines) split into:
- WriteLineData (builds protocol line, 33 lines)
- sendToTurboChannel (channel send with retry, 28 lines)
- Server.handleRequests (~67 lines) split into:
- handleRequests (request loop, 23 lines)
- handleShellRequest (shell session setup, 57 lines)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
|
|
|
|
- Add verbose command output showing exact commands executed during PGO
- Show all client commands used to generate dserver load
- Display profile merging commands with go tool pprof
- Document all commands in pgo_commands_detail.md
- Improve user visibility into PGO workflow execution
This makes it easier to understand and debug the PGO process by
showing exactly what commands are being run at each step.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- Add comprehensive PGO documentation in doc/pgo_implementation.md
- Improve dserver profiling using HTTP pprof endpoint
- Handle empty profiles gracefully for I/O-bound operations
- Add concurrent client workloads for better server profiling
- Update .gitignore to exclude PGO-generated directories
- Document performance improvements: 3-39% depending on command
The PGO implementation now supports all dtail commands with
realistic workloads and proper handling of edge cases.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- Add profiling support to dtail command (was missing)
- Import profiling package
- Add profile flags and profiler initialization
- Add metrics logging for startup/shutdown
- Fix PGO profile generation for dtail
- Create growing log file simulation for realistic profiling
- Add regex filtering to generate more CPU work
- Handle empty profiles gracefully
- Improve PGO test data generation
- Add growing_log file type for dtail testing
- Generate varied log levels (INFO/WARN/ERROR/DEBUG)
- Increase log generation rate for better profiling
Note: dtail and dserver may generate minimal CPU profiles as they are
primarily I/O-bound operations. PGO is most effective for CPU-intensive
operations like dgrep pattern matching and dmap data processing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- Add comprehensive PGO module in internal/tools/pgo/
- Integrate PGO into dtail-tools command with full CLI support
- Add Makefile targets for PGO workflow:
- make pgo: Full PGO workflow
- make pgo-quick: Quick PGO with smaller datasets
- make pgo-generate: Generate profiles only
- make build-pgo: Build with existing profiles
- make install-pgo: Install optimized binaries
- Add convenience functions to data generator for PGO
- Document PGO workflow in CLAUDE.md
Performance improvements observed:
- DCat: 3.8-7.0% additional improvement over turbo mode
- DGrep: Up to 19% improvement for low hit rates
- DMap: Variable impact, up to 64% for min_max on large files
Benchmarks show total performance gains (pre-turbo → turbo+PGO):
- DCat: 14-21x faster
- DGrep: 9-15x faster
- DMap: 9-29% faster
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
|
|
|
This commit adds comprehensive performance benchmarking comparing DTail v4.3.0
(before turbo mode) with the current implementation that has turbo boost enabled
by default.
Performance Improvements:
- DCat: 2,535% improvement (26.3x faster)
- DGrep: 1,334-1,811% improvement (14-19x faster depending on hit rate)
- DMap: 25-55% improvement for most query types
Files added:
- benchmarks/baselines/baseline_20250704_130947_turbo-enabled.txt
New baseline with turbo mode enabled for future comparisons
- doc/turbo_performance_analysis.md
Detailed technical analysis of performance improvements including
methodology, results, and implementation details
- benchmark_comparison_report.md
Summary report comparing v4.3.0 baseline with turbo-enabled baseline
The turbo mode optimizations bypass channels for direct output operations
and use direct line processing for MapReduce in server mode, resulting in
dramatic performance improvements while maintaining compatibility.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|