sociomantic-tsunami / dhtproto

Distributed Hash Table protocol definition, client, fake node, and tests
Boost Software License 1.0
5 stars 22 forks source link

Implement new legacy channel mirror helper #112

Closed gavin-norman-sociomantic closed 6 years ago

gavin-norman-sociomantic commented 6 years ago

Recently, connection problems with apps using the channel mirror have led to the apps completely locking up, due to all connections being blocked by retried GetAll or Listen requests.

Previous attempts to fix these kind of issues in the existing channel mirror revealed fundamental design mistakes. It is easier and better to implement a new solution. (Unfortunately, the neo DHT is far from production ready, so it is necessary to fix the legacy client.)

More specifics to be added.

gavin-norman-sociomantic commented 6 years ago

The bug in the existing channel mirror: https://github.com/sociomantic-tsunami/dhtproto/blob/v13.x.x/src/dhtproto/client/legacy/internal/helper/ChannelMirror.d#L119-L123.

When a request fails due to an internal client error, it is reassigned to all nodes.

The new implementation ought to not use GroupRequest at all, but rather always assign Listen / GetAll requests to individual nodes.