summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-03-05Improve lint/vet reliability and refactor client runtime/bootstrapPaul Buetow
2026-03-04refactor: simplify nil-or-empty token checks in query parser (task 338)Paul Buetow
2026-03-04fix: correct break/select flow and remove unreachable code (task 338)Paul Buetow
2026-03-04perf: avoid range-value struct copies in server job loops (task 351)Paul Buetow
2026-03-04fix: replace looped time.After with reusable tickers (task 359)Paul Buetow
2026-03-04fix: avoid defer-in-loop cancel in base client retry (task 359)Paul Buetow
2026-03-03Stabilize integration-mode auth tests and concurrent dcat readsPaul Buetow
2026-03-03Add dtailhealth no-auth-key flag and adjust turbo EOF handlingPaul Buetow
2026-03-03Apply go fix build tag modernizationPaul Buetow
2026-03-03Add percentage and percentile mapr aggregatorsPaul Buetow
2026-03-03Document auth-key fast reconnect usage and configPaul Buetow
2026-03-03Add auth-key fast reconnect integration coveragePaul Buetow
2026-03-03feat(config): add auth-key CLI and server cache settingsPaul Buetow
2026-03-03feat(client): register AUTHKEY after SSH session startPaul Buetow
2026-03-03feat(ssh-client): collect auth methods in fallback orderPaul Buetow
2026-03-03feat(server): add AUTHKEY command handlingPaul Buetow
2026-03-03feat(ssh-server): check auth key cache in public key callbackPaul Buetow
2026-03-03feat(ssh-server): add in-memory auth key storePaul Buetow
2026-03-02server: use auth strategy registry and stabilize turbo EOF syncPaul Buetow
2026-03-02handlers: use turbo EOF acknowledgement instead of sleep heuristicPaul Buetow
2026-03-02config: make server timing and buffer knobs configurablePaul Buetow
2026-03-02refactor: add readcommand facade for server dependenciesPaul Buetow
2026-03-02refactor: split turbo read processor construction in readcommandPaul Buetow
2026-03-02clients: add jittered exponential reconnect backoffPaul Buetow
2026-03-02refactor(logformat): replace parser switch with registryPaul Buetow
2026-03-02refactor(handlers): use command registry in server handlerPaul Buetow
2026-03-02refactor(handlers): decouple turbo network writer from base handlerPaul Buetow
2026-03-02mapr client: replace runtime panics with errorsPaul Buetow
Task: 4e6d7744-3f5c-4880-9e5d-368ece96470d
2026-03-02server: enforce SSH handshake deadlinePaul Buetow
Task: 536d2467-2b3d-4b4a-a843-99c96d535cbb
2026-03-02refactor(handlers): centralize protocol line/message formattingPaul Buetow
Task: 026363ea-d985-49a1-801e-bfbbe25bb6b8
2026-03-02refactor(handlers): extract shutdown coordination from read commandPaul Buetow
Task: 45cfde84-3b56-4821-bc84-b8e9a90d2ca4
2026-03-02Consolidate read command paths via strategy loop (task 333)Paul Buetow
2026-03-02Extract protocol and turbo responsibilities from baseHandler (task 327)Paul Buetow
2026-03-02Refactor server path to use injected runtime config (task 329)Paul Buetow
2026-02-15refactor: implement context-aware network dialingPaul Buetow
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>
2026-02-03Add SSH agent key selection and fix MapReduce outfile handlingPaul Buetow
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>
2026-02-01deprecatedPaul Buetow
2026-01-29refactor: improve Go best practices compliancePaul Buetow
- 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>
2026-01-29add AGENTS.mdPaul Buetow
2026-01-24test: add unit tests for turbo writer typesPaul Buetow
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>
2026-01-24refactor: split large functions for maintainabilityPaul Buetow
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>
2026-01-23ignore .serenaPaul Buetow
2026-01-23egrep is obsoletePaul Buetow
2025-07-04feat: enhance PGO with detailed command execution loggingPaul Buetow
- 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>
2025-07-04feat: complete PGO implementation with improved profilingPaul Buetow
- 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>
2025-07-04fix: add profiling support to dtail and improve PGO workflowPaul Buetow
- 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>
2025-07-04feat: add Profile-Guided Optimization (PGO) supportPaul Buetow
- 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>
2025-07-04add more baselinesPaul Buetow
2025-07-04movePaul Buetow
2025-07-04docs: add turbo mode performance baseline and analysisPaul Buetow
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>