Home / Input Output / hermes
Dec 18, 3-4 AM (0)
Dec 18, 4-5 AM (0)
Dec 18, 5-6 AM (0)
Dec 18, 6-7 AM (0)
Dec 18, 7-8 AM (0)
Dec 18, 8-9 AM (0)
Dec 18, 9-10 AM (0)
Dec 18, 10-11 AM (2)
Dec 18, 11-12 PM (1)
Dec 18, 12-1 PM (0)
Dec 18, 1-2 PM (0)
Dec 18, 2-3 PM (0)
Dec 18, 3-4 PM (0)
Dec 18, 4-5 PM (0)
Dec 18, 5-6 PM (0)
Dec 18, 6-7 PM (0)
Dec 18, 7-8 PM (0)
Dec 18, 8-9 PM (0)
Dec 18, 9-10 PM (0)
Dec 18, 10-11 PM (0)
Dec 18, 11-12 AM (0)
Dec 19, 12-1 AM (0)
Dec 19, 1-2 AM (1)
Dec 19, 2-3 AM (0)
Dec 19, 3-4 AM (0)
Dec 19, 4-5 AM (0)
Dec 19, 5-6 AM (0)
Dec 19, 6-7 AM (0)
Dec 19, 7-8 AM (0)
Dec 19, 8-9 AM (0)
Dec 19, 9-10 AM (1)
Dec 19, 10-11 AM (0)
Dec 19, 11-12 PM (0)
Dec 19, 12-1 PM (0)
Dec 19, 1-2 PM (0)
Dec 19, 2-3 PM (0)
Dec 19, 3-4 PM (0)
Dec 19, 4-5 PM (0)
Dec 19, 5-6 PM (0)
Dec 19, 6-7 PM (0)
Dec 19, 7-8 PM (0)
Dec 19, 8-9 PM (0)
Dec 19, 9-10 PM (0)
Dec 19, 10-11 PM (0)
Dec 19, 11-12 AM (0)
Dec 20, 12-1 AM (0)
Dec 20, 1-2 AM (0)
Dec 20, 2-3 AM (0)
Dec 20, 3-4 AM (0)
Dec 20, 4-5 AM (0)
Dec 20, 5-6 AM (0)
Dec 20, 6-7 AM (0)
Dec 20, 7-8 AM (0)
Dec 20, 8-9 AM (0)
Dec 20, 9-10 AM (0)
Dec 20, 10-11 AM (0)
Dec 20, 11-12 PM (0)
Dec 20, 12-1 PM (0)
Dec 20, 1-2 PM (0)
Dec 20, 2-3 PM (0)
Dec 20, 3-4 PM (0)
Dec 20, 4-5 PM (0)
Dec 20, 5-6 PM (0)
Dec 20, 6-7 PM (0)
Dec 20, 7-8 PM (0)
Dec 20, 8-9 PM (0)
Dec 20, 9-10 PM (0)
Dec 20, 10-11 PM (0)
Dec 20, 11-12 AM (0)
Dec 21, 12-1 AM (0)
Dec 21, 1-2 AM (0)
Dec 21, 2-3 AM (0)
Dec 21, 3-4 AM (0)
Dec 21, 4-5 AM (0)
Dec 21, 5-6 AM (0)
Dec 21, 6-7 AM (0)
Dec 21, 7-8 AM (0)
Dec 21, 8-9 AM (0)
Dec 21, 9-10 AM (0)
Dec 21, 10-11 AM (0)
Dec 21, 11-12 PM (0)
Dec 21, 12-1 PM (0)
Dec 21, 1-2 PM (0)
Dec 21, 2-3 PM (0)
Dec 21, 3-4 PM (0)
Dec 21, 4-5 PM (0)
Dec 21, 5-6 PM (1)
Dec 21, 6-7 PM (0)
Dec 21, 7-8 PM (0)
Dec 21, 8-9 PM (0)
Dec 21, 9-10 PM (0)
Dec 21, 10-11 PM (0)
Dec 21, 11-12 AM (5)
Dec 22, 12-1 AM (0)
Dec 22, 1-2 AM (0)
Dec 22, 2-3 AM (0)
Dec 22, 3-4 AM (0)
Dec 22, 4-5 AM (1)
Dec 22, 5-6 AM (0)
Dec 22, 6-7 AM (1)
Dec 22, 7-8 AM (1)
Dec 22, 8-9 AM (3)
Dec 22, 9-10 AM (0)
Dec 22, 10-11 AM (0)
Dec 22, 11-12 PM (0)
Dec 22, 12-1 PM (0)
Dec 22, 1-2 PM (0)
Dec 22, 2-3 PM (0)
Dec 22, 3-4 PM (0)
Dec 22, 4-5 PM (0)
Dec 22, 5-6 PM (0)
Dec 22, 6-7 PM (0)
Dec 22, 7-8 PM (0)
Dec 22, 8-9 PM (0)
Dec 22, 9-10 PM (0)
Dec 22, 10-11 PM (0)
Dec 22, 11-12 AM (0)
Dec 23, 12-1 AM (0)
Dec 23, 1-2 AM (0)
Dec 23, 2-3 AM (0)
Dec 23, 3-4 AM (0)
Dec 23, 4-5 AM (0)
Dec 23, 5-6 AM (0)
Dec 23, 6-7 AM (0)
Dec 23, 7-8 AM (1)
Dec 23, 8-9 AM (0)
Dec 23, 9-10 AM (0)
Dec 23, 10-11 AM (0)
Dec 23, 11-12 PM (1)
Dec 23, 12-1 PM (0)
Dec 23, 1-2 PM (0)
Dec 23, 2-3 PM (0)
Dec 23, 3-4 PM (0)
Dec 23, 4-5 PM (0)
Dec 23, 5-6 PM (0)
Dec 23, 6-7 PM (0)
Dec 23, 7-8 PM (0)
Dec 23, 8-9 PM (0)
Dec 23, 9-10 PM (0)
Dec 23, 10-11 PM (0)
Dec 23, 11-12 AM (1)
Dec 24, 12-1 AM (0)
Dec 24, 1-2 AM (0)
Dec 24, 2-3 AM (0)
Dec 24, 3-4 AM (0)
Dec 24, 4-5 AM (0)
Dec 24, 5-6 AM (0)
Dec 24, 6-7 AM (1)
Dec 24, 7-8 AM (1)
Dec 24, 8-9 AM (1)
Dec 24, 9-10 AM (0)
Dec 24, 10-11 AM (1)
Dec 24, 11-12 PM (0)
Dec 24, 12-1 PM (4)
Dec 24, 1-2 PM (1)
Dec 24, 2-3 PM (0)
Dec 24, 3-4 PM (0)
Dec 24, 4-5 PM (0)
Dec 24, 5-6 PM (0)
Dec 24, 6-7 PM (0)
Dec 24, 7-8 PM (0)
Dec 24, 8-9 PM (0)
Dec 24, 9-10 PM (0)
Dec 24, 10-11 PM (0)
Dec 24, 11-12 AM (0)
Dec 25, 12-1 AM (0)
Dec 25, 1-2 AM (0)
Dec 25, 2-3 AM (0)
Dec 25, 3-4 AM (0)
29 commits this week Dec 18, 2025 - Dec 25, 2025
feat(hermes): Implement quiet timers (#707)
* wip: implement quiet timer

Signed-off-by: bkioshn <[email protected]>

* feat(hermes): implement timers and their spawning

* modify timer state

Signed-off-by: bkioshn <[email protected]>

* update doc sync channel state

Signed-off-by: bkioshn <[email protected]>

* remove timers and move to cat lib

Signed-off-by: bkioshn <[email protected]>

* update doc sync host

Signed-off-by: bkioshn <[email protected]>

* try branch feat/doc-sync-timers for hermes-ipfs

Signed-off-by: bkioshn <[email protected]>

* rename

Signed-off-by: bkioshn <[email protected]>

* cargo lock

Signed-off-by: bkioshn <[email protected]>

* add hermes-ipfs version

Signed-off-by: bkioshn <[email protected]>

* fix merge conflict

Signed-off-by: bkioshn <[email protected]>

* bump hermes-ipfs to v0.0.10

Signed-off-by: bkioshn <[email protected]>

* properly implement .new msg keepalive

Signed-off-by: bkioshn <[email protected]>

---------

Signed-off-by: bkioshn <[email protected]>
Co-authored-by: Uladzislau Borbut <[email protected]>
fix(hermes): make doc-sync PubSub handler non-blocking with async file operations
  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue
fix(hermes): make doc-sync PubSub handler non-blocking with async file operations
  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue
fix(hermes): make doc-sync PubSub handler non-blocking with async file operations
  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue
fix(hermes): make doc-sync PubSub handler non-blocking with async file operations
  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue
fix(hermes): make doc-sync PubSub handler non-blocking with async file operations
  The doc_sync_topic_message_handler was blocking the PubSub event loop by using
  blocking_send/blocking_recv for IPFS file operations, preventing new messages
  from being processed while fetching content.

  Changes:
  - Add file_get_async() and file_pin_async() methods in ipfs/mod.rs that use
    send().await instead of blocking_send()
  - Update doc_sync_topic_message_handler() in ipfs/task.rs to spawn async task
    with tokio::spawn() for file operations
  - Add RECEIVED PubSub message with CID logging for test detection
  - Fix test-pubsub-propagation in p2p-testing/justfile to properly detect
    message reception using wc -l instead of grep -q

  Result:
  - PubSub handler no longer blocks - can process new messages while previous
    content is still being fetched
  - test-pubsub-propagation now passes with 100% success rate (5/5 nodes)
  - Resolves doc-sync P2P message propagation issue
fix(hermes): doc-sync P2P message format and subscription conflicts
  WHAT THIS FIXES:
  - CID format: Use dag-cbor codec (0x51) instead of dag-pb (0x70) for protocol compliance
  - Message encoding: Publish CBOR-encoded payload::New with CID lists instead of raw document bytes
  - Subscription conflict: Remove auto-subscription that prevented doc-sync module from subscribing

  CHANGES:
  - hermes/bin/src/runtime_extensions/hermes/doc_sync/host.rs:
    * Import minicbor crate directly (not via cardano_chain_follower)
    * Compute both dag-pb CID (storage) and dag-cbor CID (protocol) in add_file()
    * Construct proper payload::New structure in publish()
    * Encode to CBOR before publishing to PubSub

  - hermes/bin/src/ipfs/mod.rs:
    * Remove auto-subscription to documents.new during bootstrap
    * Prevents subscription kind conflicts with doc-sync module

  - hermes/bin/src/ipfs/task.rs:
    * Add extensive documentation of blocking operations issue
    * Document root cause and recommended async solution

  REMAINING ISSUE:
  P2P propagation still fails due to blocking operations in async context.
  The doc_sync_topic_message_handler (added in 944360f3) calls file_pin()
  and file_get() which use blocking_send()/blocking_recv(). This causes
  deadlock when called from async PubSub handler.

  NEXT STEPS:
  Convert file_pin() and file_get() to async versions. See detailed
  implementation guide in task.rs comments (lines 354-374).

  TEST:
  cd p2p-testing && just test-pubsub-propagation
  Currently FAILS with No Propagation due to blocking operations issue.
  Will PASS once async conversion is complete.

  Related: #691 (introduced blocking operations bug)