diff options
| author | Paul Buetow <paul@buetow.org> | 2025-07-02 22:28:05 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-07-02 22:28:05 +0300 |
| commit | a4eb3cc769c13312fdd4b7aaa20659e408f734b7 (patch) | |
| tree | e80d3da40af872f43e7698c13fd339286dfd2391 /internal/server | |
| parent | 17ee5e62c2b1037c21cb36f2677d2c538e2542cb (diff) | |
feat: make turbo mode configurable via config file
Add TurboModeEnable setting to server configuration with environment variable override.
The DTAIL_TURBOBOOST_ENABLE environment variable takes precedence over config file setting.
Turbo mode is automatically disabled for MapReduce operations to prevent data accuracy issues.
- Add TurboModeEnable boolean to ServerConfig struct
- Update config initializer to check environment variable for backward compatibility
- Replace direct env var checks with config.Server.TurboModeEnable throughout codebase
- Enable turbo mode in example config file (dtail.json.example)
- Add property to JSON schema with descriptive documentation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/handlers/readcommand.go | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/internal/server/handlers/readcommand.go b/internal/server/handlers/readcommand.go index 1f46498..bdb7b8b 100644 --- a/internal/server/handlers/readcommand.go +++ b/internal/server/handlers/readcommand.go @@ -121,8 +121,7 @@ func (r *readCommand) readFiles(ctx context.Context, ltx lcontext.LContext, // In turbo mode, signal EOF after all files are processed // This is crucial for proper shutdown in server mode - turboBoostEnabled := config.Env("DTAIL_TURBOBOOST_ENABLE") - if turboBoostEnabled && r.server.aggregate == nil && + if config.Server.TurboModeEnable && r.server.aggregate == nil && (r.mode == omode.CatClient || r.mode == omode.GrepClient || r.mode == omode.TailClient) { if r.server.IsTurboMode() && r.server.turboEOF != nil { dlog.Server.Debug(r.server.user, "Turbo mode: flushing data before EOF signal") @@ -249,10 +248,9 @@ func (r *readCommand) read(ctx context.Context, ltx lcontext.LContext, } // Check if we should use the turbo boost optimizations - turboBoostEnabled := config.Env("DTAIL_TURBOBOOST_ENABLE") // Enable turbo boost for cat/grep/tail modes, but NOT for aggregate (MapReduce) operations // MapReduce requires the traditional channel-based approach to work correctly - if turboBoostEnabled && r.server.aggregate == nil && + if config.Server.TurboModeEnable && r.server.aggregate == nil && (r.mode == omode.CatClient || r.mode == omode.GrepClient || r.mode == omode.TailClient) { r.readWithTurboProcessor(ctx, ltx, path, globID, re, reader) return @@ -309,7 +307,7 @@ func (r *readCommand) readWithProcessor(ctx context.Context, ltx lcontext.LConte aggregate := r.server.aggregate // Use the optimized version if turbo boost is enabled - turboBoostEnabled := config.Env("DTAIL_TURBOBOOST_ENABLE") + turboBoostEnabled := config.Server.TurboModeEnable for { if aggregate != nil { |
