mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
Fixed bug where server would crash if an invalid logtype was supplied to
search.rb. Instead server now returns zero results.
This commit is contained in:
parent
fac8def339
commit
13a54a1620
1 changed files with 23 additions and 12 deletions
|
@ -73,7 +73,17 @@ module LogStash; module Net; module Servers
|
|||
|
||||
def SearchRequestHandler(request)
|
||||
puts "Search for #{request.query.inspect}"
|
||||
response = LogStash::Net::Messages::SearchResponse.new
|
||||
response.id = request.id
|
||||
|
||||
if $logs[request.log_type].nil?
|
||||
puts "invalid log type: #{request.log_type}"
|
||||
response.results = []
|
||||
response.finished = true
|
||||
puts response.inspect
|
||||
yield response
|
||||
return
|
||||
end
|
||||
reader = Ferret::Index::IndexReader.new($logs[request.log_type].index_dir)
|
||||
search = Ferret::Search::Searcher.new(reader)
|
||||
qp = Ferret::QueryParser.new(:fields => reader.fields,
|
||||
|
@ -114,18 +124,14 @@ module LogStash; module Net; module Servers
|
|||
if (total and count < limit)
|
||||
done = true
|
||||
end
|
||||
|
||||
response = LogStash::Net::Messages::SearchResponse.new
|
||||
response.id = request.id
|
||||
response.results = results
|
||||
response.finished = false
|
||||
yield response
|
||||
part_response = LogStash::Net::Messages::SearchResponse.new
|
||||
part_response.id = request.id
|
||||
part_response.results = results
|
||||
part_response.finished = false
|
||||
yield part_response
|
||||
results = []
|
||||
offset += count
|
||||
end
|
||||
|
||||
response = LogStash::Net::Messages::SearchResponse.new
|
||||
response.id = request.id
|
||||
response.results = []
|
||||
response.finished = true
|
||||
puts response.inspect
|
||||
|
@ -134,7 +140,14 @@ module LogStash; module Net; module Servers
|
|||
|
||||
def SearchHitsRequestHandler(request)
|
||||
puts "Search for #{request.query.inspect}"
|
||||
|
||||
response = LogStash::Net::Messages::SearchHitsResponse.new
|
||||
response.id = request.id
|
||||
if $logs[request.log_type].nil?
|
||||
puts "invalid log type: #{request.log_type}"
|
||||
response.hits = 0
|
||||
yield response
|
||||
return
|
||||
end
|
||||
reader = Ferret::Index::IndexReader.new($logs[request.log_type].index_dir)
|
||||
search = Ferret::Search::Searcher.new(reader)
|
||||
qp = Ferret::QueryParser.new(:fields => reader.fields,
|
||||
|
@ -146,8 +159,6 @@ module LogStash; module Net; module Servers
|
|||
# search_each returns number of hits, even if we don't yield them.
|
||||
hits = search.search_each(query, :limit => 1, :offset => offset,
|
||||
:sort => "@DATE") { |docid, score| }
|
||||
response = LogStash::Net::Messages::SearchHitsResponse.new
|
||||
response.id = request.id
|
||||
response.hits = hits
|
||||
yield response
|
||||
end # def SearchHitsRequestHandler
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue