From 5a387e9f5a4d278641cce23ff3e996f07792a753 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 12 Oct 2022 18:38:42 -0700 Subject: [PATCH] Fixed search timeout not applying to multi_search - #1593 --- CHANGELOG.md | 1 + lib/searchkick/middleware.rb | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da40bc5..57c6862 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 5.1.0 (unreleased) - Fixed search timeout with `elasticsearch` 8+ and `opensearch-ruby` gems +- Fixed search timeout not applying to `multi_search` ## 5.0.5 (2022-10-09) diff --git a/lib/searchkick/middleware.rb b/lib/searchkick/middleware.rb index cef5d45..e2be926 100644 --- a/lib/searchkick/middleware.rb +++ b/lib/searchkick/middleware.rb @@ -3,8 +3,13 @@ require "faraday" module Searchkick class Middleware < Faraday::Middleware def call(env) - if env[:url].path.to_s.end_with?("/_search") + path = env[:url].path.to_s + if path.end_with?("/_search") env[:request][:timeout] = Searchkick.search_timeout + elsif path.end_with?("/_msearch") + # assume no concurrent searches for timeout for now + searches = env[:request_body].count("\n") / 2 + env[:request][:timeout] = Searchkick.search_timeout * searches end @app.call(env) end -- libgit2 0.21.0