@m_seki の

I like ruby tooから引っ越し

rinda/tuplespace.rb

Re: Rinda: start_keeper bug? Looking for second opinionについて。

要求の期限を過ぎたタプルや問い合わせを削除するkeeperスレッドの起動が早すぎたため、そういったタプルや問い合わせがただ一つしかない場合にタイムアウトを発生させることが出来ませんでした。keeperスレッドの起動をbagに登録してから行なうように変更して対策しました。あわせて、スレッドの起動もモニタの内側に移しました。

それから、keeperスレッドのループの最初に検査するのではなく、TupleSpaceに設定されている検査周期だけ休眠してから検査するように変更しました。keeperスレッドが活動した瞬間は、たいてい、まだタイムアウトしていないからです。

2005年ころにkeeperスレッドを終了させようとしたのが混乱の始まりなんだよなー。

test/rinda/test_rinda.rbではMockClock、Time、sleepなどを定義して時刻の流れをテストできるようにズルしています。これによって、1秒のタイムアウトを試験するのに、本当に1秒待たずに済むようになりました。ユニットテストの実行時間を短縮できます。(なので本当にテストできているのか不安)
って、今読んでみたら、MockClock自身がRinda::TupleSpaceで実装されていてびびったのでした。ということは書いたのは私か。