うちも南下ログが延々と出る こんな感じに
2009-07-13 00:16:49,147 [ INFO ] com.dokukino.genkidama.DHTServer
2009-07-13 00:16:49,324 [ INFO ] dareka.Main
2009-07-13 00:16:49,331 [ INFO ] dareka.Server
2009-07-13 00:16:54,270 [ WARN ] ow.routing.impl.IterativeRoutingDriver
2009-07-13 00:16:54,272 [ WARN ] ow.routing.impl.IterativeRoutingDriver
java.lang.NullPointerException at ow.routing.kademlia.Kademlia.distance(Kademlia.java:85) at ow.id.comparator.AlgoBasedTowardTargetIDComparator.compare(AlgoBasedTowardTargetIDComparator.java:36) at ow.id.comparator.AlgoBasedTowardTargetIDComparator.compare(AlgoBasedTowardTargetIDComparator.java:1) at ow.id.comparator.AlgoBasedTowardTargetIDAddrComparator.compare(AlgoBasedTowardTargetIDAddrComparator.java:34) at ow.id.comparator.AlgoBasedTowardTargetIDAddrComparator.compare(AlgoBasedTowardTargetIDAddrComparator.java:1) at java.util.TreeMap.getEntryUsingComparator(Unknown Source) at java.util.TreeMap.getEntry(Unknown Source) at java.util.TreeMap.remove(Unknown Source) at java.util.TreeSet.remove(Unknown Source) at ow.routing.impl.SortedContactList.remove(SortedContactList.java:68) at ow.routing.impl.IterativeRoutingDriver$Querier.call(IterativeRoutingDriver.java:698) at ow.routing.impl.IterativeRoutingDriver$Querier.call(IterativeRoutingDriver.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
2009-07-13 00:16:54,285 [ ERROR ] com.dokukino.genkidama.DHTServer
ow.routing.RoutingException at ow.routing.impl.IterativeRoutingDriver.join(IterativeRoutingDriver.java:122) at ow.dht.impl.BasicDHTImpl.joinOverlay(BasicDHTImpl.java:202) at ow.dht.impl.BasicDHTImpl.joinOverlay(BasicDHTImpl.java:192) at com.dokukino.genkidama.DHTServer.connect(DHTServer.java:94) at com.dokukino.genkidama.DHTServer.run(DHTServer.java:165)
2009-07-13 00:16:54,286 [ INFO ] com.dokukino.genkidama.DHTServer
2009-07-13 00:16:54,286 [ INFO ] com.dokukino.genkidama.DHTServer
… 以下延々と続く(その間Dashboardではオフライン)
とりあえず、UDP版も試してみる。
どうもUDPでも同じ問題が発生しているようにみえる。 しかも、その状態でもパケットは届いているようだ。 パケットのフォーマットはJavaでシリアライズされたオブジェクトなのでWiresharkでは読めない。困る。。。
UDPでも駄目な事は確認出来たが、原因が未だ判明してない。 原因を追及し、ある程度データを集めて首藤先生へ質問してみる方向で考えているが、駄目そうならばAzureusのKadmliaを移植してくる事も考えたい。 来月中に何とか解決する。
TCPの実装に問題が有るらしい事がわかった: http://groups.google.com/group/overlayweaver-ja/browse_thread/thread/73a173f0ea38d0e5
UDPだったらこの制限にはひっかからない筈なんだけど、何故かGenkidamaに入れてある改変版owはUDPが動作しないのでソースコードを一旦オリジナルに戻し、最低限必要な変更を加えてテスト中。
logger周りもGenkidamaに合わせて直さなきゃいけないけど、取りあえずそこまでやる前に一旦コミットするつもり。
7ノードでネットワークを構築し、新しいバージョンで一晩動画再生を繰り返させたが、特に通信エラーは出てない模様。 よってこの件は解決と見なしてクローズ。
あら、新規のjoinが失敗するケースが見つかった。 単体テストだと出ないんだけどな。もう少し様子見。
オフトピックだけど、SLF4jにjdk14なbridgeがあれば、ログ取り周辺のコードは書き換えなくても良さそう。slf4j-jdk14-x.x.x.jarを含めたら一発解消しないかな。
Overlay Weaverの新版が上がっていました。関係あるでしょうかね?
>2010年 5月 11日
Version 0.9.10 リリース。 * ノード加入処理のバグを修正。一度オーバレイから離脱したノードが 再度加入しようとすると、このバグが原因で失敗することがあった。
http://groups.google.com/group/overlayweaver-ja/browse_thread/thread/31ab6906aa9dd2b9#
やっぱりKademliaにするとjoinが失敗する。はてはて