Page MenuHomePhabricator

[chronik] Electrum: gracefully error when the message is too big to be serialized
ClosedPublic

Authored by Fabien on Mon, May 19, 15:23.

Details

Summary

Don't panic in this case.

Test Plan

On terminal 1

ninja && ./src/bitcoind -debug=chronik -chronik -chronikscripthashindex -chronikelectrumbind="127.0.0.1:50001:t"

On terminal 2

echo '{"jsonrpc": "2.0", "method": "blockchain.scripthash.get_history", "params": ["44f2ccb974231cfc9d13e4badc782868e1248e8d6dbb202a3a3b854484628dd2"], "id": "test"}' | nc 127.0.0.1 50001 | jq

Check that terminal 1 does not print this message

thread 'tokio-runtime-worker' panicked at chronik/chronik-http/src/electrum_codec.rs:26:12:
range end index 15220560 out of range for slice of length 1048576
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Reproduced on master, fixed with this diff.

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Tail of the build log:

[244/593] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[245/593] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[246/593] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[247/593] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[248/593] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[249/593] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[250/593] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[251/593] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[252/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[253/593] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[254/593] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[255/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[256/593] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[257/593] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/593] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[259/593] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[260/593] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[261/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[262/593] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/593] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[264/593] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[265/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[266/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[267/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[268/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[269/593] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[270/593] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[271/593] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[272/593] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[273/593] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[274/593] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[275/593] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/593] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[278/593] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[279/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[280/593] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[281/593] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[283/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[284/593] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[285/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[286/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/593] Linking C static library src/secp256k1/libsecp256k1.a
[289/593] Linking C executable src/secp256k1/internal-bench
[290/593] Linking C executable src/secp256k1/sign-bench
[291/593] Linking C executable src/secp256k1/ecmult-bench
[292/593] Linking C executable src/secp256k1/verify-bench
[293/593] Linking C executable src/secp256k1/recover-bench
[294/593] Linking CXX static library src/libbitcoinconsensus.a
[295/593] Linking CXX static library src/libscript.a
[296/593] Linking CXX static library src/libcommon.a
[297/593] Linking CXX shared library src/libbitcoinconsensus.so.0.31.5
[298/593] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/593] Linking CXX executable src/iguana/iguana
[300/593] Linking CXX executable src/bitcoin-cli
[301/593] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

Tail of the build log:

[244/593] Building CXX object src/CMakeFiles/common.dir/common/args.cpp.o
[245/593] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[246/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/593] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[248/593] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[249/593] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[250/593] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[251/593] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[252/593] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[253/593] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[254/593] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[255/593] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[256/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[257/593] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[258/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[259/593] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[260/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[261/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[262/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[263/593] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[264/593] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[265/593] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[266/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[267/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[268/593] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[269/593] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[270/593] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[271/593] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[272/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[273/593] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[274/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[275/593] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[276/593] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[277/593] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[278/593] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[279/593] Linking C static library src/secp256k1/libsecp256k1.a
[280/593] Linking C executable src/secp256k1/recover-bench
[281/593] Linking C executable src/secp256k1/sign-bench
[282/593] Linking C executable src/secp256k1/verify-bench
[283/593] Linking CXX static library src/libbitcoinconsensus.a
[284/593] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[285/593] Linking C executable src/secp256k1/internal-bench
[286/593] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[287/593] Linking C executable src/secp256k1/ecmult-bench
[288/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[289/593] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[290/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[291/593] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[292/593] Linking CXX static library src/libscript.a
[293/593] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[294/593] Linking CXX static library src/libcommon.a
[295/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[296/593] Linking CXX shared library src/libbitcoinconsensus.so.0.31.5
[297/593] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[298/593] Linking CXX executable src/bitcoin-cli
[299/593] Linking CXX executable src/iguana/iguana
[300/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[301/593] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

[244/593] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[245/593] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[246/593] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[247/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[248/593] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[249/593] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[250/593] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[251/593] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[252/593] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/593] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[254/593] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[255/593] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[256/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[257/593] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[258/593] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[259/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[260/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[261/593] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[262/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[263/593] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[264/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[265/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[266/593] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[267/593] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[268/593] Building CXX object src/CMakeFiles/common.dir/eventloop.cpp.o
[269/593] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[270/593] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[271/593] Building CXX object src/CMakeFiles/common.dir/feerate.cpp.o
[272/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[273/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[274/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[275/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[276/593] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[277/593] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[278/593] Linking C static library src/secp256k1/libsecp256k1.a
[279/593] Linking C executable src/secp256k1/recover-bench
[280/593] Linking C executable src/secp256k1/sign-bench
[281/593] Linking C executable src/secp256k1/verify-bench
[282/593] Linking C executable src/secp256k1/ecmult-bench
[283/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[284/593] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[285/593] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[286/593] Linking CXX static library src/libbitcoinconsensus.a
[287/593] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[288/593] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[289/593] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[290/593] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[291/593] Linking C executable src/secp256k1/internal-bench
[292/593] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[293/593] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[294/593] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[295/593] Linking CXX static library src/libscript.a
[296/593] Linking CXX static library src/libcommon.a
[297/593] Linking CXX shared library src/libbitcoinconsensus.so.0.31.5
[298/593] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/593] Linking CXX executable src/iguana/iguana
[300/593] Linking CXX executable src/bitcoin-cli
[301/593] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

Tail of the build log:

   Compiling http-body-util v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
   Compiling sha1 v0.10.6
   Compiling data-encoding v2.6.0
   Compiling httpdate v1.0.3
   Compiling utf-8 v0.7.6
   Compiling winnow v0.6.20
   Compiling hyper v1.5.1
   Compiling tungstenite v0.24.0
   Compiling url v2.5.4
   Compiling memoffset v0.9.1
   Compiling karyon_core v0.3.0
   Compiling mime v0.3.17
   Compiling sync_wrapper v1.0.2
   Compiling unicode-segmentation v1.12.0
   Compiling sync_wrapper v0.1.2
   Compiling unindent v0.2.3
   Compiling tower v0.5.1
   Compiling axum-core v0.4.5
   Compiling hyper-util v0.1.10
   Compiling tokio-tungstenite v0.24.0
   Compiling convert_case v0.6.0
   Compiling toml_edit v0.22.22
   Compiling serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.3.0
   Compiling futures-executor v0.3.31
   Compiling serde_path_to_error v0.1.16
   Compiling matchit v0.7.3
   Compiling librocksdb-sys v0.11.0+8.1.1
   Compiling base64 v0.22.1
   Compiling futures v0.3.31
   Compiling tower-http v0.5.2
   Compiling pyo3-macros v0.23.3
   Compiling toml v0.8.19
   Compiling axum v0.7.9
   Compiling chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
   Compiling rustls-webpki v0.102.8
   Compiling tokio-rustls v0.26.1
   Compiling karyon_async_rustls v0.3.0
   Compiling karyon_net v0.3.0
   Compiling karyon_jsonrpc v0.3.0
   Compiling rocksdb v0.21.0
   Compiling chronik-db v0.1.0 (/work/chronik/chronik-db)
   Compiling chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
   Compiling chronik-http v0.1.0 (/work/chronik/chronik-http)
error[E0599]: no variant or associated item named `EncodeError` found for enum `karyon_jsonrpc::error::Error` in the current scope
  --> chronik/chronik-http/src/electrum_codec.rs:29:31
   |
29 |             return Err(Error::EncodeError(
   |                               ^^^^^^^^^^^ variant or associated item not found in `Error`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `chronik-http` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

    Checking karyon_core v0.3.0
    Checking tungstenite v0.24.0
    Checking hyper v1.5.1
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking chronik-plugin-common v0.1.0 (/work/chronik/chronik-plugin-common)
    Checking url v2.5.4
    Checking serde_spanned v0.6.8
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking winnow v0.6.20
    Checking topo_sort v0.4.0
    Checking sync_wrapper v1.0.2
    Checking sync_wrapper v0.1.2
    Checking mime v0.3.17
    Checking seahash v4.1.0
    Checking tower v0.5.1
    Checking hyper-util v0.1.10
    Checking tokio-tungstenite v0.24.0
    Checking axum-core v0.4.5
    Checking memoffset v0.9.1
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
   Compiling karyon_jsonrpc_macro v0.3.0
    Checking serde_path_to_error v0.1.16
    Checking matchit v0.7.3
    Checking unindent v0.2.3
    Checking unicode-segmentation v1.12.0
    Checking base64 v0.22.1
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.3.0
    Checking karyon_net v0.3.0
    Checking karyon_jsonrpc v0.3.0
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
error[E0599]: no variant or associated item named `EncodeError` found for enum `karyon_jsonrpc::error::Error` in the current scope
  --> chronik/chronik-http/src/electrum_codec.rs:29:31
   |
29 |             return Err(Error::EncodeError(
   |                               ^^^^^^^^^^^ variant or associated item not found in `Error`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `chronik-http` (lib) due to 1 previous error
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1
Fabien published this revision for review.Mon, May 19, 21:30

Suggested test plan:

terminal 1

ninja && ./src/bitcoind -debug=chronik -chronik -chronikscripthashindex -chronikelectrumbind="127.0.0.1:50001:t"

terminal 2

echo '{"jsonrpc": "2.0", "method": "blockchain.scripthash.get_history", "params": ["44f2ccb974231cfc9d13e4badc782868e1248e8d6dbb202a3a3b854484628dd2"], "id": "test"}' | nc 127.0.0.1 50001 | jq

Check that terminal 1 does not print this message

thread 'tokio-runtime-worker' panicked at chronik/chronik-http/src/electrum_codec.rs:26:12:
range end index 15220560 out of range for slice of length 1048576
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Reproduced on master, seems fixed on D18114

Now with this diff the issue is that Chronik fails silently to reply to this request. It would be ideal to see a RPC reply with an error message, or at the very least a log line on the server side.

Add a log message in case of an encoding error

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking sync_wrapper v1.0.2
    Checking topo_sort v0.4.0
    Checking seahash v4.1.0
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking mime v0.3.17
    Checking sync_wrapper v0.1.2
    Checking winnow v0.6.20
    Checking memoffset v0.9.1
    Checking tower v0.5.1
    Checking tokio-tungstenite v0.24.0
    Checking hyper-util v0.1.10
    Checking axum-core v0.4.5
    Checking serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.3.0
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
    Checking unicode-segmentation v1.12.0
    Checking base64 v0.22.1
    Checking unindent v0.2.3
    Checking matchit v0.7.3
    Checking futures v0.3.31
    Checking convert_case v0.6.0
    Checking tower-http v0.5.2
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking toml_edit v0.22.22
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.3.0
    Checking karyon_net v0.3.0
    Checking karyon_jsonrpc v0.3.0
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
error: this boolean expression contains a logic bug
  --> chronik/chronik-http/src/electrum_codec.rs:29:12
   |
29 |         if true || buf.len() + 1 > dst.len() {
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: it would look like the following: `true`
   |
help: this expression can be optimized out by applying boolean operations to the outer expression
  --> chronik/chronik-http/src/electrum_codec.rs:29:20
   |
29 |         if true || buf.len() + 1 > dst.len() {
   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#overly_complex_bool_expr
   = note: `#[deny(clippy::overly_complex_bool_expr)]` on by default

error: could not compile `chronik-http` (lib) due to 1 previous error
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1
PiRK requested changes to this revision.Tue, May 20, 12:59

there is a debbuging true || that needs removing

This revision now requires changes to proceed.Tue, May 20, 12:59

Removing debugging bypass

In D18114#413179, @PiRK wrote:

there is a debbuging true || that needs removing

Oups, good catch

This revision is now accepted and ready to land.Tue, May 20, 15:43