kafka/internal/search
Franz Kafka 385a7acab7 feat: concurrent engine execution with graceful degradation
- Run all local engines in parallel using goroutines + sync.WaitGroup
- Individual engine failures are captured as unresponsive_engines entries
  instead of aborting the entire search request
- Context cancellation is respected: cancelled engines report as unresponsive
- Upstream proxy failure is also gracefully handled (single unresponsive entry)
- Extract unresponsiveResponse() and emptyResponse() helpers for consistency
- Add comprehensive tests:
  - ConcurrentEngines: verifies parallelism (2x100ms engines complete in ~100ms)
  - GracefulDegradation: one engine fails, one succeeds, both represented
  - AllEnginesFail: no error returned, all engines in unresponsive_engines
  - ContextCancellation: engine respects context timeout, reports unresponsive
2026-03-21 15:39:00 +00:00
..
merge.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00
merge_test.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00
request_params.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00
request_params_test.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00
response.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00
service.go feat: concurrent engine execution with graceful degradation 2026-03-21 15:39:00 +00:00
service_test.go feat: concurrent engine execution with graceful degradation 2026-03-21 15:39:00 +00:00
types.go feat: build Go-based SearXNG-compatible search service 2026-03-20 20:34:08 +01:00