YUKI Hiroshi
yuki****@clear*****
Wed Apr 22 10:55:35 JST 2015
確かに分かりにくかったので、別の形に変更しました。 (ifの条件式の中でforwardするのは副作用を伴うifということでこれもまた望 ましくなさそうなので、全部分けるようにしてみました。) Kouhei Sutou wrote: >> + fowarded = forward(buffered_message_path) || fowarded > > この書き方、ちょっとトリッキーだなと思いました。 > > 「1つでも成功したら成功」というコードだと思うので、 > > if forward(buffered_message_path) > fowarded = true > end > > の方がやりたいことが明確なコードじゃないかと思いました。 > > それはそれとして、fowardedはtypoっぽいです。 > > fo warded > forwarded > + > > In <8df8014dd311c826b78cbfabe30d2e1609cc35a2 �� jenkins.clear-code.com> > "[Groonga-commit] droonga/droonga-engine �� 8df8014 [master] Don't forward messages older than the timestamp given as "process_messages_newer_than"" on Tue, 21 Apr 2015 19:16:13 +0900, > YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > >> YUKI Hiroshi 2015-04-21 19:16:13 +0900 (Tue, 21 Apr 2015) >> >> New Revision: 8df8014dd311c826b78cbfabe30d2e1609cc35a2 >> https://github.com/droonga/droonga-engine/commit/8df8014dd311c826b78cbfabe30d2e1609cc35a2 >> >> Message: >> Don't forward messages older than the timestamp given as "process_messages_newer_than" >> >> Modified files: >> lib/droonga/forward_buffer.rb >> >> Modified: lib/droonga/forward_buffer.rb (+14 -3) >> =================================================================== >> --- lib/droonga/forward_buffer.rb 2015-04-21 18:32:20 +0900 (60e2e75) >> +++ lib/droonga/forward_buffer.rb 2015-04-21 19:16:13 +0900 (3e5c0bf) >> @@ -64,8 +64,13 @@ module Droonga >> >> def start_forward >> logger.trace("start_forward: start") >> + fowarded = false >> Pathname.glob("#{@data_directory}/*#{SUFFIX}").collect do |buffered_message_path| >> - forward(buffered_message_path) >> + fowarded = forward(buffered_message_path) || fowarded >> + end >> + if @process_messages_newer_than_timestamp and fowarded >> + logger.info("New message is detected and forwarded. The boundary is now cleared.") >> + @process_messages_newer_than_timestamp = nil >> end >> @serf.reset_have_unprocessed_messages_for(@target) >> logger.trace("start_forward: done") >> @@ -90,6 +95,8 @@ module Droonga >> message = buffered_message["message"] >> destination = buffered_message["destination"] >> >> + forwarded = false >> + >> if @process_messages_newer_than_timestamp >> message_timestamp = Time.parse(message["date"]) >> logger.trace("Checking boundary of obsolete message", >> @@ -98,8 +105,9 @@ module Droonga >> if @process_messages_newer_than_timestamp >= message_timestamp >> buffered_message = nil >> else >> - logger.info("New message is detected. The boundary is now cleared.") >> - @process_messages_newer_than_timestamp = nil >> + logger.info("New message is detected.") >> + # Don't clear the boundary for now, because older messages >> + # forwarded by the dispatcher can be still buffered. >> end >> end >> >> @@ -109,10 +117,13 @@ module Droonga >> :destination => destination) >> message["xSender"] = "forward-buffer" >> on_forward(message, destination) >> + forwarded = true >> end >> >> FileUtils.rm_f(buffered_message_path.to_s) >> logger.trace("forward: done (#{buffered_message_path})") >> + >> + forwarded >> end >> >> def file_path(time_stamp=Time.now) > > _______________________________________________ > Groonga-commit mailing list > Groonga-commit �� lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/groonga-commit > -- 結城 洋志 <YUKI Hiroshi> E-mail: yuki �� clear-code.com 株式会社クリアコード 〒170-0005 東京都豊島区南大塚3-29-9 中野ビル3階 TEL : 03-5927-9440 FAX : 03-5927-9441 WWW : http://www.clear-code.com/