YUKI Hiroshi
null+****@clear*****
Fri Dec 27 10:09:14 JST 2013
YUKI Hiroshi 2013-12-27 10:09:14 +0900 (Fri, 27 Dec 2013) New Revision: b972f4f43a50c90f4e39042ddf8efbf404c8f913 https://github.com/droonga/fluent-plugin-droonga/commit/b972f4f43a50c90f4e39042ddf8efbf404c8f913 Message: Don't duplicate codes to sort queries Modified files: lib/droonga/plugin/distributor/distributed_search_planner.rb lib/droonga/searcher.rb Modified: lib/droonga/plugin/distributor/distributed_search_planner.rb (+1 -3) =================================================================== --- lib/droonga/plugin/distributor/distributed_search_planner.rb 2013-12-26 19:48:29 +0900 (2dc70a1) +++ lib/droonga/plugin/distributor/distributed_search_planner.rb 2013-12-27 10:09:14 +0900 (af27e18) @@ -36,9 +36,7 @@ module Droonga UNLIMITED = -1 def build_messages - if Searcher.have_cyclic_source?(@queries) - raise Searcher::CyclicSource.new(@queries) - end + Searcher.validate_sources(@queries) ensure_unifiable! Modified: lib/droonga/searcher.rb (+10 -16) =================================================================== --- lib/droonga/searcher.rb 2013-12-26 19:48:29 +0900 (f9b08c1) +++ lib/droonga/searcher.rb 2013-12-27 10:09:14 +0900 (b997644) @@ -45,19 +45,24 @@ module Droonga end class << self - def have_cyclic_source?(queries) + def sort_queries(queries) query_sorter = QuerySorter.new queries.each do |name, query| source = query["source"] - return true if source == name + raise MissingSourceParameter.new(name, queries) unless source + raise CyclicSource.new(queries) if name == source query_sorter.add(name, [source]) end begin sorted_queries = query_sorter.tsort rescue TSort::Cyclic - return true + raise CyclicSource.new(queries) end - false + sorted_queries + end + + def validate_sources(queries) + sort_queries(queries) end end @@ -83,18 +88,7 @@ module Droonga return {} end $log.trace("#{log_tag}: process_queries: sort: start") - query_sorter = QuerySorter.new - queries.each do |name, query| - source = query["source"] - raise MissingSourceParameter.new(name, queries) unless source - raise CyclicSource.new(queries) if name == source - query_sorter.add(name, [source]) - end - begin - sorted_queries = query_sorter.tsort - rescue TSort::Cyclic - raise CyclicSource.new(queries) - end + sorted_queries = self.class.sort_queries(queries) $log.trace("#{log_tag}: process_queries: sort: done") outputs = {} results = {} -------------- next part -------------- HTML����������������������������... 下载