MoreRindaのPTupleSpaceにバグが見つかったので修正しました。
RindaのTupleSpaceは期限付きでwriteしたタプルは、期限が過ぎると向こうになってtake, readしようとしても返さないようになってます。
MoreRindaに入ってる永続版のPTupleSpaceでも同様です。
PTupleSpaceはログを使って永続化を実現してます。明示的な削除(つまりtake)があった場合はログにも削除マークがつきます。
PTupleSpaceが再起動されるとき、ログを読んで前回の状態になるのですが、このとき期限が過ぎて無効扱いのタプルも復元していました。
それでもtakeやreadは期限をチェックするので無効なタプルがアプリケーションに見えることはないのですが、
notifyを使ってイベントを覗いている場合には、前回無効と判断されたタプルが再び無効と判断されてdeleteのイベントが届いてしまいます。
今回の修正では、ログを読んで復元する際に、期限切れのタプルを無視するとともに、ログにも削除マークをつけるようにしました。
これでPTupleSpaceの再起動後に余分なdeleteイベントが通知されることはなくなります。たぶん。