Skip to content

chutney verify fails when feature flowctl-cc is enabled

To reproduce:

# build arti with flowctl-cc enabled
$ cargo build -p arti --features=flowctl-cc
...
# tell chutney where to find the arti bin
$ export CHUTNEY_ARTI=$(realpath target/debug/arti)
# go to source dir of a recent chutney
$ cd ../chutney
# run chutney's test-network.sh script.
# You might need more parameters, e.g. to tell it where to find the tor bin.
# Alternatively you can run `chutney bootstrap basic-arti; chutney verify basic-arti`,
# but this wrapper script sets some defaults and ensures the network is torn down
# between repeated attempts.
$ ./tools/test-network.sh --flavor basic-arti
...
Running 1 verify rounds for this bootstrap...

Launching chutney using Python 3.10.12
Verifying data transmission: (retrying for up to 60 seconds)
Connecting:
  Exit to 127.0.0.1:4747 via client localhost:9009
  Exit to 127.0.0.1:4747 via client localhost:9010
Transmitting Data:
INFO:chutney.Traffic:Registering exit via test009torc send-data-1
INFO:chutney.Traffic:Registering exit via test009torc check-2
INFO:chutney.Traffic:Registering exit via test010artic send-data-3
INFO:chutney.Traffic:Registering exit via test010artic check-4
INFO:chutney.Traffic:Success for exit via test009torc send-data-1
INFO:chutney.Traffic:Success for exit via test009torc check-2
INFO:chutney.Traffic:Timed out
INFO:chutney.Traffic:Status:
# tor client successfully sent all 5 MB
  exit via test009torc send-data-1: success (Flushed)
# tor client successfully received back all echoed 5 MB
  exit via test009torc check-2: success (successful verification)
# some of the 5 MB have been sent at the time of timeout
  exit via test010artic send-data-3: not done (wrote some. remaining:393216)
# ~2.4 MB of the data that *was* sent was successfully echoed back
  exit via test010artic check-4: not done (consumed some. remaining:2461430)
  not-done:2 successes:2 failures:0
INFO:chutney.Traffic:Failure for exit via test010artic check-4
Connecting:
  Exit to 127.0.0.1:4747 via client localhost:9009
  Exit to 127.0.0.1:4747 via client localhost:9010
...
# some retries here and eventually some python errors when a global timeout expires
# and we try to exit but fail to clean everything up properly

The generated network, including config files and logs for all hosts, should be at net/nodes. e.g. the arti client log should be at net/nodes/010artic/debug.log, and seems unhappy about guards:

...
2025-08-20T15:42:51Z  WARN tor_circmgr: Problem launching a timeout testing circuit: error: Unable to select a guard relay: No usable guards. Rejected 9/9 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
...
2025-08-20T15:42:58Z DEBUG tor_circmgr::hspool: Unable to build preemptive circuit for onion services: error: Unable to select a guard relay: No usable guards. Rejected 9/9 as down, then 0/0 as pending, then 0/0 as unsuitable to purpose, then 0/0 with filter.
...
2025-08-20T15:42:59Z  WARN tor_dirmgr::bootstrap: error while downloading: error: Problem downloading directory object: Error while getting a circuit: Tried to find or build a tunnel 2 times, but all attempts failed
...

Conversely, the above test succeeds when arti is built with default features, or full.

Edited by Jim Newsome