Skip to content

Commit

Permalink
Merge tag v13.3.0 into v14.x.x
Browse files Browse the repository at this point in the history
  • Loading branch information
Gavin Norman committed Mar 19, 2018
2 parents 658ccf5 + a68a3c4 commit 905d665
Show file tree
Hide file tree
Showing 6 changed files with 945 additions and 227 deletions.
4 changes: 3 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,12 @@ Maintained Major Branches
======= ==================== =============== =====
Major Initial release date Supported until Notes
======= ==================== =============== =====
v13.x.x v13.0.0_: 01/08/2017 TBD First open source release
v13.x.x v13.0.0_: 01/08/2017 30/07/2018 First open source release
v14.x.x v14.0.0_: 30/01/2018 TBD
======= ==================== =============== =====

.. _v13.0.0: https://github.com/sociomantic-tsunami/dhtproto/releases/tag/v13.0.0
.. _v14.0.0: https://github.com/sociomantic-tsunami/dhtproto/releases/tag/v14.0.0


Contributing
Expand Down
40 changes: 40 additions & 0 deletions relnotes/mirror.feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
### New channel mirror helper with improved handling of connection errors

`dhtproto.client.legacy.internal.helper.Mirror`

The new channel mirror implementation deliberately has the same API as the old
one, allowing it to be used as a drop-in replacement. You should be able to
simply change imports of `dhtproto.client.legacy.internal.helper.ChannelMirror`
to `dhtproto.client.legacy.internal.helper.Mirror` and instantiate a `Mirror`
object, instead of a `ChannelMirror` object.

Notes:
* The new channel mirror does not reassign requests to connected nodes when
there's an error on another connection. (This fixes a major problem in the old
channel mirror.)
* The new channel mirror is thus also suitable for use with applications that
start their main functionality after a partial DHT handshake.
* Due to the different internal implementation, the GetAll requests assigned by
the new channel mirror may not be synchronised. This means that you can
receive GetAll data from different nodes at different times. This is not
expected to have any effect on applications, but is a noteworthy change in
behaviour.

### Extensible channel mirror works with new channel mirror class

`dhtproto.client.legacy.internal.helper.ExtensibleChannelMirror`

The new template -- `ExtensibleMirror` -- allows the extensible mirror
functionality to be used with the new `Mirror` class. Usage like:
```D
alias ExtensibleChannelMirror!(SchedulingDhtClient,
RawRecordDeserializer!(Record), DeserializedRecordCache!(Record))
ExampleMirror;
```
should be changed to
```D
alias ExtensibleMirror!(SchedulingDhtClient, Mirror!(SchedulingDhtClient),
RawRecordDeserializer!(Record), DeserializedRecordCache!(Record))
ExampleMirror;
```

Loading

0 comments on commit 905d665

Please sign in to comment.