Commit graph

16 commits

Author SHA1 Message Date
Jonas Schnelli 3a3e21dafb
Merge #14687: zmq: enable tcp keepalive
c276df7759 zmq: enable tcp keepalive (mruddy)

Pull request description:

  This addresses https://github.com/bitcoin/bitcoin/issues/12754.

  These changes enable node operators to address the silent dropping (by network middle boxes) of long-lived low-activity ZMQ TCP connections via further operating system level TCP keepalive configuration. For example, ZMQ sockets that publish block hashes can be affected in this way due to the length of time it sometimes takes between finding blocks (e.g.- sometimes more than an hour).

  Prior to this patch, operating system level TCP keepalive configurations would not take effect since the SO_KEEPALIVE option was not enabled on the underlying socket.

  There are additional ZMQ socket options related to TCP keepalive that can be set. However, I decided not to implement those options in this changeset because doing so would require adding additional bitcoin node configuration options, and would not yield a better outcome. I preferred a small, easily reviewable patch that doesn't add a bunch of new config options, with the tradeoff that the fine tuning would have to be done via well-documented operating system specific configurations.

  I tested this patch by running a node with:
  `./src/qt/bitcoin-qt -regtest -txindex -datadir=/tmp/node -zmqpubhashblock=tcp://127.0.0.1:28332 &`
  and connecting to it with:
  `python3 ./contrib/zmq/zmq_sub.py`

  Without these changes, `ss -panto | grep 28332 | grep ESTAB | grep bitcoin` will report no keepalive timer information. With these changes, the output from the prior command will show keepalive timer information consistent with the configuration at the time of connection establishment, e.g.-: `timer:(keepalive,119min,0)`.

  I also tested with a non-TCP transport and did not witness any adverse effects:
  `./src/qt/bitcoin-qt -regtest -txindex -datadir=/tmp/node -zmqpubhashblock=ipc:///tmp/bitcoin.block &`

ACKs for top commit:
  adamjonas:
    Just to summarize for those looking to review - as of c276df7759 there are 3 tACKs (n-thumann, Haaroon, and dlogemann), 1 "looks good to me" (laanwj) with no NACKs or any show-stopping concerns raised.
  jonasschnelli:
    utACK c276df7759

Tree-SHA512: b884c2c9814e97e666546a7188c48f9de9541499a11a934bd48dd16169a900c900fa519feb3b1cb7e9915fc7539aac2829c7806b5937b4e1409b4805f3ef6cd1
2020-09-02 09:09:18 +02:00
Damian Mee d97fac422e
Add a link from ZMQ doc to ZMQ example in contrib/ 2020-05-12 16:06:28 +08:00
João Barbosa 6bc1ff915d doc: Add note regarding ZMQ block notification 2019-08-19 01:05:58 +01:00
mruddy c276df7759 zmq: enable tcp keepalive 2018-11-15 08:16:25 -05:00
mruddy a4edb168b6 ZMQ: add options to configure outbound message high water mark, aka SNDHWM 2018-10-19 07:36:13 -04:00
mruddy f1bd03eb01 [depends, zmq, doc] upgrade zeromq to 4.2.5 and avoid deprecated zeromq api functions 2018-09-11 16:33:05 -04:00
Dimitris Apostolou a9761cae1c
Fix typos and cleanup
[ci-skip]
2018-03-02 23:00:25 +02:00
Karel Bílek 06a3aecf06 Docs: Hash in ZMQ hash is raw bytes, not hex
Transaction hash cannot be in hexadecimal, that would be 64 bytes. In reality it's just raw bytes.
2017-08-19 11:30:35 +02:00
Koki Takahashi 36164faa33 Fix typo and spelling inconsistency in CONTRIBUTING.md
Fix spellings of GitHub

Remove unnecessary changes

Fix GitHub spelling on doc/translation_process.md
2017-02-09 11:56:44 +09:00
MarcoFalke fa389d4edc [qa] Switch to py3 2016-05-05 15:43:37 +02:00
Jonas Schnelli 0b25a9fb42
[ZMQ] append a message sequence number to every ZMQ notification 2016-04-19 15:32:11 +02:00
Mitchell Cash 99963b938f Correct spelling mistakes in doc folder
- OSX —> OS X
- XCode —> Xcode
- github —> GitHub
- homebrew —> Homebrew
- gitian —> Gitian
- Other miscellaneous obvious spelling fixes and whitespace removal
2015-10-18 06:25:43 +10:00
Johnathan Corgan 7d325b9de7
zmq: point API link to 4.0 as that is what we are conforming to [Trivial]
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
2015-10-12 13:40:13 -07:00
Johnathan Corgan 9f5c641a40 zmq: update docs to reflect feature is compiled in automatically if possible
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
2015-10-05 20:09:04 -07:00
Johnathan Corgan ab0b8be857 zmq: update and cleanup build-unix, release-notes, and zmq docs
Signed-off-by: Johnathan Corgan <johnathan@corganlabs.com>
2015-09-29 10:48:45 -07:00
Jeff Garzik e6a14b64d6 Add ZeroMQ support. Notify blocks and transactions via ZeroMQ
Continues Johnathan Corgan's work.
Publishing multipart messages

Bugfix: Add missing zmq header includes

Bugfix: Adjust build system to link ZeroMQ code for Qt binaries
2015-09-16 11:01:35 +01:00