mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 22:57:16 -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)
|
def SearchRequestHandler(request)
|
||||||
puts "Search for #{request.query.inspect}"
|
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)
|
reader = Ferret::Index::IndexReader.new($logs[request.log_type].index_dir)
|
||||||
search = Ferret::Search::Searcher.new(reader)
|
search = Ferret::Search::Searcher.new(reader)
|
||||||
qp = Ferret::QueryParser.new(:fields => reader.fields,
|
qp = Ferret::QueryParser.new(:fields => reader.fields,
|
||||||
|
@ -114,18 +124,14 @@ module LogStash; module Net; module Servers
|
||||||
if (total and count < limit)
|
if (total and count < limit)
|
||||||
done = true
|
done = true
|
||||||
end
|
end
|
||||||
|
part_response = LogStash::Net::Messages::SearchResponse.new
|
||||||
response = LogStash::Net::Messages::SearchResponse.new
|
part_response.id = request.id
|
||||||
response.id = request.id
|
part_response.results = results
|
||||||
response.results = results
|
part_response.finished = false
|
||||||
response.finished = false
|
yield part_response
|
||||||
yield response
|
|
||||||
results = []
|
results = []
|
||||||
offset += count
|
offset += count
|
||||||
end
|
end
|
||||||
|
|
||||||
response = LogStash::Net::Messages::SearchResponse.new
|
|
||||||
response.id = request.id
|
|
||||||
response.results = []
|
response.results = []
|
||||||
response.finished = true
|
response.finished = true
|
||||||
puts response.inspect
|
puts response.inspect
|
||||||
|
@ -134,7 +140,14 @@ module LogStash; module Net; module Servers
|
||||||
|
|
||||||
def SearchHitsRequestHandler(request)
|
def SearchHitsRequestHandler(request)
|
||||||
puts "Search for #{request.query.inspect}"
|
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)
|
reader = Ferret::Index::IndexReader.new($logs[request.log_type].index_dir)
|
||||||
search = Ferret::Search::Searcher.new(reader)
|
search = Ferret::Search::Searcher.new(reader)
|
||||||
qp = Ferret::QueryParser.new(:fields => reader.fields,
|
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.
|
# search_each returns number of hits, even if we don't yield them.
|
||||||
hits = search.search_each(query, :limit => 1, :offset => offset,
|
hits = search.search_each(query, :limit => 1, :offset => offset,
|
||||||
:sort => "@DATE") { |docid, score| }
|
:sort => "@DATE") { |docid, score| }
|
||||||
response = LogStash::Net::Messages::SearchHitsResponse.new
|
|
||||||
response.id = request.id
|
|
||||||
response.hits = hits
|
response.hits = hits
|
||||||
yield response
|
yield response
|
||||||
end # def SearchHitsRequestHandler
|
end # def SearchHitsRequestHandler
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue