[Groonga-commit] droonga/droonga-client-ruby at 9b5ccbc [master] droonga-protocol thread: fix EOF handling

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Jul 14 23:40:32 JST 2014


Kouhei Sutou	2014-07-14 23:40:32 +0900 (Mon, 14 Jul 2014)

  New Revision: 9b5ccbc6a2cf694cd6501823d3c6e2921d31a0e6
  https://github.com/droonga/droonga-client-ruby/commit/9b5ccbc6a2cf694cd6501823d3c6e2921d31a0e6

  Message:
    droonga-protocol thread: fix EOF handling

  Modified files:
    lib/droonga/client/connection/droonga-protocol/thread.rb

  Modified: lib/droonga/client/connection/droonga-protocol/thread.rb (+7 -6)
===================================================================
--- lib/droonga/client/connection/droonga-protocol/thread.rb    2014-05-29 22:30:15 +0900 (8aba7b9)
+++ lib/droonga/client/connection/droonga-protocol/thread.rb    2014-07-14 23:40:32 +0900 (5e2ff85)
@@ -151,6 +151,7 @@ module Droonga
               @client_handlers.each_key do |client|
                 client.close
               end
+              @read_ios.clear
             end
 
             def host
@@ -194,18 +195,18 @@ module Droonga
                 @read_ios << client
                 @client_handlers[client] = lambda do
                   unpacker = MessagePack::Unpacker.new
-                  loop do
-                    readable, = IO.select([client], nil, nil, 0)
-                    break unless readable
+                  begin
                     data = client.read_nonblock(BUFFER_SIZE)
+                  rescue EOFError
+                    client.close
+                    @read_ios.delete(client)
+                    @client_handlers.delete(client)
+                  else
                     unpacker.feed_each(data) do |fluent_message|
                       tag, time, droonga_message = fluent_message
                       yield(droonga_message)
                     end
                   end
-                  client.close
-                  @read_ios.delete(client)
-                  @client_handlers.delete(client)
                 end
               else
                 @client_handlers[io].call
-------------- next part --------------
HTML����������������������������...
下載 



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