[Groonga-commit] droonga/fluent-plugin-droonga at b972f4f [master] Don't duplicate codes to sort queries

Back to archive index

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����������������������������...
下载 



More information about the Groonga-commit mailing list
Back to archive index