reverbrain/elliptics — pull request #181 by SaveTheRbtz (2013-07-21 17:49:00+00:00)
Title: Iterator and recovery improvements.

Recovery:
* Added `remove_async()` method to python binding;
* Remove successfully recovered keys from wrong node in `merge` mode;
* Added `--safe` mode that does does not remove keys after `merge`:
It should be used in `cron` jobs in case there were multiple changes to routing table;
* By default bind `monitor` on `::` instead of `0.0.0.0` if IPv6 is supported:
On Linux with `net.ipv6.bindv6only == 0` (default, as stated by `RFC3493`) binding on IPv6 `::` also binds IPv4 `0.0.0.0`.

Iterators:
* Limit number of `inflight` iterator replies:
`inflight` means replies that were sent by iterator code but still not sent over the wire. This will avoid OOM in case all DB is in page cache and iteration therefore is super-fast;
* Disabled now unused file-based iteration;
* Fixed iterator memory leak on shutdown;
* Cancel all running/paused iterators on shutdown;
* More robust iterator creation;
* Added more sanity checks to iterator code.