diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 54a6a0e0288..85ff2e2fc6a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -97,7 +97,7 @@ go_deps.bzl @dfinity/idx /rs/bitcoin/mock/ @dfinity/cross-chain-team /rs/bitcoin/client/ @dfinity/networking /rs/bitcoin/consensus/ @dfinity/execution @dfinity/consensus -/rs/bitcoin/kyt/ @dfinity/cross-chain-team +/rs/bitcoin/checker/ @dfinity/cross-chain-team /rs/bitcoin/service/ @dfinity/networking /rs/bitcoin/replica_types/ @dfinity/execution /rs/bitcoin/validation @dfinity/networking @dfinity/execution @@ -209,6 +209,7 @@ go_deps.bzl @dfinity/idx /rs/rust_canisters/response_payload_test/ @dfinity/execution /rs/rust_canisters/stable_structures/ @dfinity/execution /rs/rust_canisters/stable_memory_integrity @dfinity/execution +/rs/rust_canisters/statesync_test @dfinity/ic-message-routing-owners /rs/rust_canisters/canister_creator @dfinity/execution /rs/rust_canisters/load_simulator @dfinity/execution /rs/rust_canisters/xnet_test/ @dfinity/ic-message-routing-owners @@ -235,28 +236,25 @@ go_deps.bzl @dfinity/idx /rs/test_utilities/state/ @dfinity/execution @dfinity/ic-message-routing-owners /rs/test_utilities/types/src/batch/ @dfinity/consensus /rs/tests/ @dfinity/idx -/rs/tests/research @dfinity/research @dfinity/idx -/rs/tests/dashboards/IC/execution-metrics.json @dfinity/execution @dfinity/idx -/rs/tests/dashboards/IC/bitcoin.json @dfinity/execution @dfinity/idx -/rs/tests/driver/src/driver/simulate_network.rs @dfinity/networking -/rs/tests/boundary_nodes/ @dfinity/boundary-node @dfinity/idx -/rs/tests/ckbtc/ @dfinity/cross-chain-team @dfinity/idx -/rs/tests/consensus/ @dfinity/consensus @dfinity/idx -/rs/tests/cross_chain/ @dfinity/cross-chain-team @dfinity/idx -/rs/tests/crypto/ @dfinity/crypto-team @dfinity/idx -/rs/tests/dre/ @dfinity/dre @dfinity/idx -/rs/tests/execution/ @dfinity/execution @dfinity/idx -/rs/tests/financial_integrations/ @dfinity/finint @dfinity/idx -/rs/tests/message_routing/ @dfinity/ic-message-routing-owners @dfinity/idx -/rs/tests/networking/ @dfinity/networking @dfinity/idx -/rs/tests/nns/ @dfinity/nns-team @dfinity/idx -/rs/tests/node/ @dfinity/node @dfinity/idx -/rs/tests/query_stats/ @dfinity/execution @dfinity/consensus @dfinity/idx -/rs/tests/sdk/ @dfinity/sdk @dfinity/idx -/rs/tests/src/ledger_tests/ @dfinity/finint @dfinity/idx -/rs/tests/src/nns_tests/ @dfinity/nns-team @dfinity/idx -/rs/tests/src/rosetta_test.rs @dfinity/finint @dfinity/idx -/rs/tests/src/rosetta_tests/ @dfinity/finint @dfinity/idx +/rs/tests/research @dfinity/research +/rs/tests/driver/src/driver/simulate_network.rs @dfinity/networking @dfinity/idx +/rs/tests/boundary_nodes/ @dfinity/boundary-node +/rs/tests/ckbtc/ @dfinity/cross-chain-team +/rs/tests/consensus/ @dfinity/consensus +/rs/tests/cross_chain/ @dfinity/cross-chain-team +/rs/tests/crypto/ @dfinity/crypto-team +/rs/tests/dre/ @dfinity/dre +/rs/tests/execution/ @dfinity/execution +/rs/tests/financial_integrations/ @dfinity/finint +/rs/tests/message_routing/ @dfinity/ic-message-routing-owners +/rs/tests/networking/ @dfinity/networking +/rs/tests/nns/ @dfinity/nns-team +/rs/tests/node/ @dfinity/node +/rs/tests/query_stats/ @dfinity/execution @dfinity/consensus +/rs/tests/sdk/ @dfinity/sdk +/rs/tests/src/ledger_tests/ @dfinity/finint +/rs/tests/src/rosetta_test.rs @dfinity/finint +/rs/tests/src/rosetta_tests/ @dfinity/finint /rs/tests/k8s/ @dfinity/idx @dfinity/node /rs/tla_instrumentation/ @dfinity/research @dfinity/formal-models /rs/tools/ @dfinity/ic-interface-owners diff --git a/.github/workflows-source/ci-main.yml b/.github/workflows-source/ci-main.yml index 186d314b839..21f3c5eaa7e 100644 --- a/.github/workflows-source/ci-main.yml +++ b/.github/workflows-source/ci-main.yml @@ -97,6 +97,12 @@ jobs: runs-on: group: zh1 labels: dind-large + env: + AWS_SHARED_CREDENTIALS_CONTENT: ${{ secrets.AWS_SHARED_CREDENTIALS_FILE }} + # Only run ci/bazel-scripts/diff.sh on PRs that are not labeled with "CI_ALL_BAZEL_TARGETS". + OVERRIDE_DIDC_CHECK: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_DIDC_CHECK') }} + CI_OVERRIDE_BUF_BREAKING: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_BUF_BREAKING') }} + RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} steps: - <<: *checkout - <<: *docker-login @@ -129,7 +135,7 @@ jobs: TEST_TAG_FILTERS=$(IFS=,; echo "${EXCLUDED_TEST_TAGS[*]/#/-}") # Determine BAZEL_EXTRA_ARGS based on event type or branch name BAZEL_EXTRA_ARGS="--test_tag_filters=$TEST_TAG_FILTERS" - if [[ "${{ github.event_name }}" == 'merge_group' ]]; then + if [[ "$CI_EVENT_NAME" == 'merge_group' ]]; then BAZEL_EXTRA_ARGS+=" --test_timeout_filters=short,moderate --flaky_test_attempts=3" elif [[ $BRANCH_NAME =~ ^hotfix-.* ]]; then BAZEL_EXTRA_ARGS+=" --test_timeout_filters=short,moderate" @@ -138,17 +144,9 @@ jobs: fi # Export BAZEL_EXTRA_ARGS to environment echo "BAZEL_EXTRA_ARGS=$BAZEL_EXTRA_ARGS" >> $GITHUB_ENV - env: - RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} - name: Run Bazel Test All id: bazel-test-all uses: ./.github/actions/bazel-test-all/ - env: - AWS_SHARED_CREDENTIALS_CONTENT: ${{ secrets.AWS_SHARED_CREDENTIALS_FILE }} - # Only run ci/bazel-scripts/diff.sh on PRs that are not labeled with "CI_ALL_BAZEL_TARGETS". - OVERRIDE_DIDC_CHECK: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_DIDC_CHECK') }} - CI_OVERRIDE_BUF_BREAKING: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_BUF_BREAKING') }} - RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} with: BAZEL_COMMAND: "test" BAZEL_TARGETS: "//..." diff --git a/.github/workflows-source/schedule-daily.yml b/.github/workflows-source/schedule-daily.yml index 0e7243e05e1..d8546002961 100644 --- a/.github/workflows-source/schedule-daily.yml +++ b/.github/workflows-source/schedule-daily.yml @@ -163,6 +163,14 @@ jobs: BAZEL_EXTRA_ARGS: "--test_tag_filters=system_test_benchmark --//bazel:enable_upload_perf_systest_results=True --keep_going --jobs 1" BUILDEVENT_APIKEY: ${{ secrets.HONEYCOMB_API_TOKEN }} - <<: *bazel-bep + - name: Post Slack Notification + uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0 + if: failure() + with: + channel-id: eng-crypto-alerts + slack-message: "${{ github.job }} failed :disappointed: - <${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}|Run#${{github.run_id}}>" + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_API_TOKEN }} dependency-scan-nightly: name: Dependency Scan Nightly diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 1aeec11caac..0c334b8448d 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -37,6 +37,12 @@ jobs: runs-on: group: zh1 labels: dind-large + env: + AWS_SHARED_CREDENTIALS_CONTENT: ${{ secrets.AWS_SHARED_CREDENTIALS_FILE }} + # Only run ci/bazel-scripts/diff.sh on PRs that are not labeled with "CI_ALL_BAZEL_TARGETS". + OVERRIDE_DIDC_CHECK: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_DIDC_CHECK') }} + CI_OVERRIDE_BUF_BREAKING: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_BUF_BREAKING') }} + RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} steps: - name: Checkout uses: actions/checkout@v4 @@ -77,7 +83,7 @@ jobs: TEST_TAG_FILTERS=$(IFS=,; echo "${EXCLUDED_TEST_TAGS[*]/#/-}") # Determine BAZEL_EXTRA_ARGS based on event type or branch name BAZEL_EXTRA_ARGS="--test_tag_filters=$TEST_TAG_FILTERS" - if [[ "${{ github.event_name }}" == 'merge_group' ]]; then + if [[ "$CI_EVENT_NAME" == 'merge_group' ]]; then BAZEL_EXTRA_ARGS+=" --test_timeout_filters=short,moderate --flaky_test_attempts=3" elif [[ $BRANCH_NAME =~ ^hotfix-.* ]]; then BAZEL_EXTRA_ARGS+=" --test_timeout_filters=short,moderate" @@ -86,17 +92,9 @@ jobs: fi # Export BAZEL_EXTRA_ARGS to environment echo "BAZEL_EXTRA_ARGS=$BAZEL_EXTRA_ARGS" >> $GITHUB_ENV - env: - RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} - name: Run Bazel Test All id: bazel-test-all uses: ./.github/actions/bazel-test-all/ - env: - AWS_SHARED_CREDENTIALS_CONTENT: ${{ secrets.AWS_SHARED_CREDENTIALS_FILE }} - # Only run ci/bazel-scripts/diff.sh on PRs that are not labeled with "CI_ALL_BAZEL_TARGETS". - OVERRIDE_DIDC_CHECK: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_DIDC_CHECK') }} - CI_OVERRIDE_BUF_BREAKING: ${{ contains(github.event.pull_request.labels.*.name, 'CI_OVERRIDE_BUF_BREAKING') }} - RUN_ON_DIFF_ONLY: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'CI_ALL_BAZEL_TARGETS') }} with: BAZEL_COMMAND: "test" BAZEL_TARGETS: "//..." diff --git a/.github/workflows/schedule-daily.yml b/.github/workflows/schedule-daily.yml index f6af2d9e132..833d90f273b 100644 --- a/.github/workflows/schedule-daily.yml +++ b/.github/workflows/schedule-daily.yml @@ -198,6 +198,14 @@ jobs: path: | bazel-bep.pb profile.json + - name: Post Slack Notification + uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0 + if: failure() + with: + channel-id: eng-crypto-alerts + slack-message: "${{ github.job }} failed :disappointed: - <${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}|Run#${{github.run_id}}>" + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_API_TOKEN }} dependency-scan-nightly: name: Dependency Scan Nightly runs-on: diff --git a/.github/workflows/schedule-rust-bench.yml b/.github/workflows/schedule-rust-bench.yml index 3b6eb645e14..18d19e4a111 100644 --- a/.github/workflows/schedule-rust-bench.yml +++ b/.github/workflows/schedule-rust-bench.yml @@ -6,13 +6,11 @@ on: workflow_dispatch: env: - BAZEL_STARTUP_ARGS: "--output_base=/var/tmp/bazel-output/" BRANCH_NAME: ${{ github.head_ref || github.ref_name }} CI_COMMIT_SHA: ${{ github.sha }} CI_JOB_NAME: ${{ github.job }} CI_PROJECT_DIR: ${{ github.workspace }} CI_RUN_ID: ${{ github.run_id }} - BUILDEVENT_DATASET: "github-ci-dfinity" jobs: @@ -46,6 +44,7 @@ jobs: BAZEL_CI_CONFIG: "--config=ci --repository_cache=/cache/bazel" BAZEL_COMMAND: "run" BAZEL_STARTUP_ARGS: "--output_base=/var/tmp/bazel-output/" + CI_JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" RUSTFLAGS: "--remap-path-prefix=${CI_PROJECT_DIR}=/ic" RUST_BACKTRACE: "full" TARGETS: ${{ matrix.targets }} diff --git a/.github/workflows/slack-workflow-run.yml b/.github/workflows/slack-workflow-run.yml index cd6c3350eac..f528867888f 100644 --- a/.github/workflows/slack-workflow-run.yml +++ b/.github/workflows/slack-workflow-run.yml @@ -55,6 +55,11 @@ jobs: POST_TO_SLACK="true" fi + # Non-IDX alerts + if [[ "$TRIGGERING_WORKFLOW_NAME" == "Schedule Rust Benchmarks" ]]; then + CHANNEL="eng-crypto-alerts" + fi + echo "channel=${CHANNEL}" >> $GITHUB_OUTPUT echo "message=${FULL_MESSAGE}" >> $GITHUB_OUTPUT echo "post_to_slack=${POST_TO_SLACK}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/system-tests-k8s.yml b/.github/workflows/system-tests-k8s.yml index fa02d47251f..892ce8a20cb 100644 --- a/.github/workflows/system-tests-k8s.yml +++ b/.github/workflows/system-tests-k8s.yml @@ -7,11 +7,12 @@ name: System Tests K8s # --field jobs="32" on: - schedule: - - cron: "0 3 * * *" - pull_request: - paths: - - '.github/workflows/system-tests-k8s.yml' + # XXX: temporarily disabling until we have kubevirt 1.4.0 + # schedule: + # - cron: "0 3 * * *" + # pull_request: + # paths: + # - '.github/workflows/system-tests-k8s.yml' workflow_dispatch: inputs: targets: diff --git a/.github/workflows/update-mainnet-revisions.yaml b/.github/workflows/update-mainnet-revisions.yaml new file mode 100644 index 00000000000..d96a9d95857 --- /dev/null +++ b/.github/workflows/update-mainnet-revisions.yaml @@ -0,0 +1,32 @@ +name: Update IC versions file + +on: + schedule: + - cron: "10 * * * *" + workflow_dispatch: + +jobs: + update-ic-versions-file: + runs-on: ubuntu-latest + steps: + - name: Create GitHub App Token + uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ vars.PR_AUTOMATION_BOT_PUBLIC_APP_ID }} + private-key: ${{ secrets.PR_AUTOMATION_BOT_PUBLIC_PRIVATE_KEY }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + token: ${{ steps.app-token.outputs.token }} + + - name: Update IC versions file + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + set -eEuxo pipefail + + time python ci/src/mainnet_revisions/mainnet_revisions.py + shell: bash diff --git a/.gitignore b/.gitignore index 3be01346419..f7ef2ffe4ec 100644 --- a/.gitignore +++ b/.gitignore @@ -86,8 +86,6 @@ dev-root-ca.crt cpp/**/infogetty cpp/**/infogetty.o cpp/**/network_info.o -cpp/**/prestorecon -cpp/**/prestorecon.o # Various build artifacts artifacts diff --git a/Cargo.Bazel.Fuzzing.json.lock b/Cargo.Bazel.Fuzzing.json.lock index 6967f6c5285..f2147abd496 100644 --- a/Cargo.Bazel.Fuzzing.json.lock +++ b/Cargo.Bazel.Fuzzing.json.lock @@ -1,5 +1,5 @@ { - "checksum": "2afa4380416577e8ad0b8c3fe342e4dd718e3d617b3c81f8134ce7e0b9ba9f14", + "checksum": "450ee9a1af0058d25f3cc1bc2b3906b3e4271ca79174522e2e1a71c0d9a9c85a", "crates": { "abnf 0.12.0": { "name": "abnf", @@ -197,7 +197,7 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -217,15 +217,15 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -317,7 +317,7 @@ "target": "brotli" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -389,15 +389,15 @@ "target": "smallvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -541,7 +541,7 @@ "target": "serde" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -601,7 +601,7 @@ "target": "futures_core" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -692,11 +692,11 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -905,7 +905,7 @@ "target": "ahash" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -1626,7 +1626,7 @@ "target": "axum" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -1634,7 +1634,7 @@ "target": "cfg_if" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -1666,7 +1666,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -3416,7 +3416,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -3481,7 +3481,7 @@ "target": "futures" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -3573,7 +3573,7 @@ "target": "slab" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -3818,7 +3818,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -3870,7 +3870,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -4158,7 +4158,7 @@ "target": "futures_rustls" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4493,7 +4493,7 @@ "target": "axum_core" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4501,7 +4501,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4565,7 +4565,7 @@ "target": "sync_wrapper" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -4581,7 +4581,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -4651,7 +4651,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4659,7 +4659,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4691,7 +4691,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -4768,7 +4768,7 @@ "target": "axum_core" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4784,7 +4784,7 @@ "target": "headers" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4938,7 +4938,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -5032,7 +5032,7 @@ "target": "arc_swap" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -5040,7 +5040,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -5072,7 +5072,7 @@ "target": "rustls_pemfile" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -5162,7 +5162,7 @@ "target": "rand" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio", "alias": "tokio_1" } @@ -5223,7 +5223,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -9286,14 +9286,14 @@ ], "license_file": "LICENSE-MIT" }, - "bytes 1.8.0": { + "bytes 1.9.0": { "name": "bytes", - "version": "1.8.0", + "version": "1.9.0", "package_url": "https://github.com/tokio-rs/bytes", "repository": { "Http": { - "url": "https://static.crates.io/crates/bytes/1.8.0/download", - "sha256": "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" + "url": "https://static.crates.io/crates/bytes/1.9.0/download", + "sha256": "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" } }, "targets": [ @@ -9333,7 +9333,7 @@ "selects": {} }, "edition": "2018", - "version": "1.8.0" + "version": "1.9.0" }, "license": "MIT", "license_ids": [ @@ -9417,7 +9417,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -13089,7 +13089,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -15095,7 +15095,7 @@ "target": "tinytemplate" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -18557,7 +18557,7 @@ "target": "byteorder" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -18773,7 +18773,7 @@ "target": "hmac" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -19515,7 +19515,7 @@ "target": "time" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -19523,7 +19523,7 @@ "target": "tokio_io_timeout" }, { - "id": "tokio-metrics 0.3.1", + "id": "tokio-metrics 0.4.0", "target": "tokio_metrics" }, { @@ -19543,7 +19543,7 @@ "target": "tokio_test" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -19579,7 +19579,7 @@ "target": "tower_governor" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -19603,7 +19603,7 @@ "target": "tracing_slog" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" }, { @@ -22440,7 +22440,7 @@ "target": "arrayvec" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26295,7 +26295,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26327,15 +26327,15 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -26382,7 +26382,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26402,7 +26402,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -26414,15 +26414,15 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -26724,7 +26724,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26795,7 +26795,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26803,7 +26803,7 @@ "target": "headers_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -26909,7 +26909,7 @@ "deps": { "common": [ { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" } ], @@ -27490,7 +27490,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -27558,7 +27558,7 @@ "target": "tinyvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -27566,7 +27566,7 @@ "target": "tokio_rustls" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -27699,7 +27699,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -27707,7 +27707,7 @@ "target": "tokio_rustls" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -28093,7 +28093,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28117,14 +28117,14 @@ ], "license_file": "LICENSE-APACHE" }, - "http 1.1.0": { + "http 1.2.0": { "name": "http", - "version": "1.1.0", + "version": "1.2.0", "package_url": "https://github.com/hyperium/http", "repository": { "Http": { - "url": "https://static.crates.io/crates/http/1.1.0/download", - "sha256": "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" + "url": "https://static.crates.io/crates/http/1.2.0/download", + "sha256": "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" } }, "targets": [ @@ -28156,7 +28156,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28171,7 +28171,7 @@ "selects": {} }, "edition": "2018", - "version": "1.1.0" + "version": "1.2.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -28212,7 +28212,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28267,11 +28267,11 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" } ], @@ -28318,7 +28318,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28374,7 +28374,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28382,7 +28382,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28706,7 +28706,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28754,7 +28754,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -28762,7 +28762,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -28824,7 +28824,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28840,7 +28840,7 @@ "target": "h2" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28868,7 +28868,7 @@ "target": "smallvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -28919,7 +28919,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28931,7 +28931,7 @@ "target": "headers" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28947,7 +28947,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29036,7 +29036,7 @@ "target": "rustls_native_certs" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29235,7 +29235,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29264,7 +29264,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29518,7 +29518,7 @@ "target": "async_socks5" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29534,7 +29534,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29598,7 +29598,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29666,7 +29666,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -29678,7 +29678,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29698,7 +29698,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29706,7 +29706,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -29952,7 +29952,7 @@ "target": "hex" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -30319,7 +30319,7 @@ "target": "webpki" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -30841,7 +30841,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -30877,7 +30877,7 @@ "target": "hickory_resolver" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -30989,7 +30989,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -31001,7 +31001,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -31013,7 +31013,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -32359,7 +32359,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -32371,7 +32371,7 @@ "target": "futures" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -32950,7 +32950,7 @@ "target": "time" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -35670,11 +35670,11 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -37285,7 +37285,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -37305,7 +37305,7 @@ "target": "home" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -37377,11 +37377,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -37393,7 +37393,7 @@ "target": "tower_http" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -37448,7 +37448,7 @@ "target": "form_urlencoded" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -39838,7 +39838,7 @@ "deps": { "common": [ { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -41869,7 +41869,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -41957,7 +41957,7 @@ "target": "simple_logger" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -42875,7 +42875,7 @@ "target": "similar" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -43139,7 +43139,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -43257,7 +43257,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -43269,7 +43269,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -45572,7 +45572,7 @@ "target": "arrayvec" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -45637,7 +45637,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -46191,7 +46191,7 @@ "target": "futures_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -46215,7 +46215,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -46223,7 +46223,7 @@ "target": "tonic" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -46966,7 +46966,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -47085,7 +47085,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -47093,7 +47093,7 @@ "target": "tokio_stream" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -50096,11 +50096,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -50108,7 +50108,7 @@ "target": "tracing_appender" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -50175,7 +50175,7 @@ "target": "cfg_if" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -52484,7 +52484,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -52549,7 +52549,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -52614,7 +52614,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -52720,7 +52720,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53852,7 +53852,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53886,11 +53886,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -53946,7 +53946,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53978,7 +53978,7 @@ "target": "tinyvec" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -54042,7 +54042,7 @@ "target": "socket2" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -56611,7 +56611,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -56674,7 +56674,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56704,7 +56704,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56734,7 +56734,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56764,7 +56764,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56794,7 +56794,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56824,7 +56824,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56854,7 +56854,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56884,7 +56884,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56914,7 +56914,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56944,7 +56944,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56974,7 +56974,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57004,7 +57004,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57054,7 +57054,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -57110,7 +57110,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57140,7 +57140,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57170,7 +57170,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57200,7 +57200,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57230,7 +57230,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57260,7 +57260,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57290,7 +57290,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57320,7 +57320,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57350,7 +57350,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57380,7 +57380,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57410,7 +57410,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57440,7 +57440,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57470,7 +57470,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57500,7 +57500,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57530,7 +57530,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57560,7 +57560,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57590,7 +57590,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57620,7 +57620,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57650,7 +57650,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57680,7 +57680,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57757,7 +57757,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -57769,7 +57769,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -57844,7 +57844,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57894,7 +57894,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57944,7 +57944,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57994,7 +57994,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58044,7 +58044,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58094,7 +58094,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58144,7 +58144,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58194,7 +58194,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58244,7 +58244,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58294,7 +58294,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58344,7 +58344,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58394,7 +58394,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58444,7 +58444,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -58514,7 +58514,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58564,7 +58564,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58614,7 +58614,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58664,7 +58664,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58714,7 +58714,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58764,7 +58764,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58814,7 +58814,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58864,7 +58864,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58914,7 +58914,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58964,7 +58964,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59014,7 +59014,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59076,7 +59076,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59126,7 +59126,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59176,7 +59176,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59226,7 +59226,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59276,7 +59276,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59326,7 +59326,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59376,7 +59376,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59426,7 +59426,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59476,7 +59476,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -60269,7 +60269,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -62431,7 +62431,7 @@ "target": "futures_rustls" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -66700,7 +66700,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -66712,7 +66712,7 @@ "target": "sha2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -69712,7 +69712,7 @@ "target": "rand" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -71084,7 +71084,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -71092,11 +71092,11 @@ "target": "tokio_serde" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -73341,14 +73341,14 @@ ], "license_file": null }, - "tokio 1.41.1": { + "tokio 1.42.0": { "name": "tokio", - "version": "1.41.1", + "version": "1.42.0", "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio/1.41.1/download", - "sha256": "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" + "url": "https://static.crates.io/crates/tokio/1.42.0/download", + "sha256": "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" } }, "targets": [ @@ -73409,7 +73409,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -73840,7 +73840,7 @@ ], "selects": {} }, - "version": "1.41.1" + "version": "1.42.0" }, "license": "MIT", "license_ids": [ @@ -73884,7 +73884,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -73955,14 +73955,14 @@ ], "license_file": "LICENSE" }, - "tokio-metrics 0.3.1": { + "tokio-metrics 0.4.0": { "name": "tokio-metrics", - "version": "0.3.1", + "version": "0.4.0", "package_url": "https://github.com/tokio-rs/tokio-metrics", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio-metrics/0.3.1/download", - "sha256": "eace09241d62c98b7eeb1107d4c5c64ca3bd7da92e8c218c153ab3a78f9be112" + "url": "https://static.crates.io/crates/tokio-metrics/0.4.0/download", + "sha256": "cb2bb07a8451c4c6fa8b3497ad198510d8b8dffa5df5cfb97a64102a58b113c8" } }, "targets": [ @@ -74003,7 +74003,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74014,7 +74014,7 @@ "selects": {} }, "edition": "2021", - "version": "0.3.1" + "version": "0.4.0" }, "license": "MIT", "license_ids": [ @@ -74067,7 +74067,7 @@ "target": "rustls" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74133,7 +74133,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74198,7 +74198,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74262,7 +74262,7 @@ "alias": "bincode_crate" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74358,7 +74358,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74421,7 +74421,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74472,7 +74472,7 @@ "target": "async_stream" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74480,7 +74480,7 @@ "target": "futures_core" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74548,7 +74548,7 @@ "target": "log" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74567,14 +74567,14 @@ ], "license_file": "LICENSE" }, - "tokio-util 0.7.12": { + "tokio-util 0.7.13": { "name": "tokio-util", - "version": "0.7.12", + "version": "0.7.13", "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio-util/0.7.12/download", - "sha256": "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" + "url": "https://static.crates.io/crates/tokio-util/0.7.13/download", + "sha256": "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" } }, "targets": [ @@ -74617,7 +74617,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74645,14 +74645,14 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], "selects": {} }, "edition": "2021", - "version": "0.7.12" + "version": "0.7.13" }, "license": "MIT", "license_ids": [ @@ -74935,7 +74935,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74943,7 +74943,7 @@ "target": "h2" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -74983,7 +74983,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -75003,7 +75003,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75191,11 +75191,11 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75207,7 +75207,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75316,11 +75316,11 @@ "target": "sync_wrapper" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75332,7 +75332,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75402,11 +75402,11 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75426,7 +75426,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -75438,7 +75438,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75516,7 +75516,7 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -75524,7 +75524,7 @@ "target": "futures_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75540,11 +75540,11 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75560,7 +75560,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -75649,7 +75649,7 @@ "deps": { "common": [ { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75754,7 +75754,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -75832,7 +75832,7 @@ "target": "governor" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75848,7 +75848,7 @@ "target": "tower" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75864,14 +75864,14 @@ ], "license_file": null }, - "tracing 0.1.40": { + "tracing 0.1.41": { "name": "tracing", - "version": "0.1.40", + "version": "0.1.41", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing/0.1.40/download", - "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" + "url": "https://static.crates.io/crates/tracing/0.1.41/download", + "sha256": "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" } }, "targets": [ @@ -75914,7 +75914,7 @@ "target": "pin_project_lite" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -75924,13 +75924,13 @@ "proc_macro_deps": { "common": [ { - "id": "tracing-attributes 0.1.27", + "id": "tracing-attributes 0.1.28", "target": "tracing_attributes" } ], "selects": {} }, - "version": "0.1.40" + "version": "0.1.41" }, "license": "MIT", "license_ids": [ @@ -75982,7 +75982,7 @@ "target": "time" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -75997,14 +75997,14 @@ ], "license_file": "LICENSE" }, - "tracing-attributes 0.1.27": { + "tracing-attributes 0.1.28": { "name": "tracing-attributes", - "version": "0.1.27", + "version": "0.1.28", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-attributes/0.1.27/download", - "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" + "url": "https://static.crates.io/crates/tracing-attributes/0.1.28/download", + "sha256": "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" } }, "targets": [ @@ -76044,7 +76044,7 @@ "selects": {} }, "edition": "2018", - "version": "0.1.27" + "version": "0.1.28" }, "license": "MIT", "license_ids": [ @@ -76052,14 +76052,14 @@ ], "license_file": "LICENSE" }, - "tracing-core 0.1.32": { + "tracing-core 0.1.33": { "name": "tracing-core", - "version": "0.1.32", + "version": "0.1.33", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-core/0.1.32/download", - "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" + "url": "https://static.crates.io/crates/tracing-core/0.1.33/download", + "sha256": "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" } }, "targets": [ @@ -76099,7 +76099,7 @@ "selects": {} }, "edition": "2018", - "version": "0.1.32" + "version": "0.1.33" }, "license": "MIT", "license_ids": [ @@ -76150,11 +76150,11 @@ "target": "lazy_static" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76216,7 +76216,7 @@ "target": "once_cell" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76271,15 +76271,15 @@ "target": "opentelemetry" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76351,11 +76351,11 @@ "target": "smallvec" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { @@ -76363,7 +76363,7 @@ "target": "tracing_log" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76425,7 +76425,7 @@ "target": "serde" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76440,6 +76440,57 @@ ], "license_file": "LICENSE" }, + "tracing-serde 0.2.0": { + "name": "tracing-serde", + "version": "0.2.0", + "package_url": "https://github.com/tokio-rs/tracing", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/tracing-serde/0.2.0/download", + "sha256": "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tracing_serde", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "tracing_serde", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "serde 1.0.214", + "target": "serde" + }, + { + "id": "tracing-core 0.1.33", + "target": "tracing_core" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.2.0" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE" + }, "tracing-slog 0.2.0": { "name": "tracing-slog", "version": "0.2.0", @@ -76487,7 +76538,7 @@ "target": "slog" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76502,14 +76553,14 @@ ], "license_file": "LICENSE" }, - "tracing-subscriber 0.3.18": { + "tracing-subscriber 0.3.19": { "name": "tracing-subscriber", - "version": "0.3.18", + "version": "0.3.19", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-subscriber/0.3.18/download", - "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" + "url": "https://static.crates.io/crates/tracing-subscriber/0.3.19/download", + "sha256": "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" } }, "targets": [ @@ -76600,11 +76651,11 @@ "target": "time" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { @@ -76612,14 +76663,14 @@ "target": "tracing_log" }, { - "id": "tracing-serde 0.1.3", + "id": "tracing-serde 0.2.0", "target": "tracing_serde" } ], "selects": {} }, "edition": "2018", - "version": "0.3.18" + "version": "0.3.19" }, "license": "MIT", "license_ids": [ @@ -76808,11 +76859,11 @@ "target": "tinyvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -76920,11 +76971,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -77048,7 +77099,7 @@ "target": "byteorder" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -77056,7 +77107,7 @@ "target": "data_encoding" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -77138,7 +77189,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -77162,7 +77213,7 @@ "target": "scoped_tls" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -77174,15 +77225,15 @@ "target": "tokio_test" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -78651,7 +78702,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -78687,7 +78738,7 @@ "target": "snafu" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -79151,7 +79202,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -79219,7 +79270,7 @@ "target": "serde_urlencoded" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -79231,7 +79282,7 @@ "target": "tokio_tungstenite" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -79239,7 +79290,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -87619,7 +87670,7 @@ "by_address 1.1.0", "byte-unit 4.0.19", "byteorder 1.5.0", - "bytes 1.8.0", + "bytes 1.9.0", "cached 0.49.2", "canbench 0.1.8", "canbench-rs 0.1.8", @@ -87674,7 +87725,7 @@ "hex-literal 0.4.1", "hkdf 0.12.4", "hmac 0.12.1", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util 0.1.2", "humantime 2.1.0", @@ -87868,14 +87919,14 @@ "tikv-jemalloc-ctl 0.5.4", "tikv-jemallocator 0.5.4", "time 0.3.36", - "tokio 1.41.1", + "tokio 1.42.0", "tokio-io-timeout 1.2.0", - "tokio-metrics 0.3.1", + "tokio-metrics 0.4.0", "tokio-rustls 0.26.0", "tokio-serde 0.8.0", "tokio-socks 0.5.2", "tokio-test 0.4.4", - "tokio-util 0.7.12", + "tokio-util 0.7.13", "toml 0.5.11", "tonic 0.12.3", "tonic-build 0.12.3", @@ -87884,13 +87935,13 @@ "tower-request-id 0.3.0", "tower-test 0.4.0", "tower_governor 0.4.2", - "tracing 0.1.40", + "tracing 0.1.41", "tracing-appender 0.2.3", "tracing-flame 0.2.0", "tracing-opentelemetry 0.28.0", "tracing-serde 0.1.3", "tracing-slog 0.2.0", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.19", "trust-dns-resolver 0.22.0", "turmoil 0.6.4", "url 2.5.3", diff --git a/Cargo.Bazel.Fuzzing.toml.lock b/Cargo.Bazel.Fuzzing.toml.lock index 9375a7a18ae..ae82144c530 100644 --- a/Cargo.Bazel.Fuzzing.toml.lock +++ b/Cargo.Bazel.Fuzzing.toml.lock @@ -299,7 +299,7 @@ dependencies = [ "axum", "bytes", "cfg-if 1.0.0", - "http 1.1.0", + "http 1.2.0", "indexmap 2.2.6", "schemars", "serde", @@ -606,7 +606,7 @@ checksum = "096146020b08dbc4587685b0730a7ba905625af13c65f8028035cdfd69573c91" dependencies = [ "anyhow", "futures", - "http 1.1.0", + "http 1.2.0", "httparse", "log", ] @@ -733,7 +733,7 @@ dependencies = [ "async-net", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "lazy_static", "log", "rustls-pki-types", @@ -796,7 +796,7 @@ dependencies = [ "axum-macros", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -829,7 +829,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -853,7 +853,7 @@ dependencies = [ "fastrand 2.2.0", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -883,7 +883,7 @@ source = "git+https://github.com/ttys3/axum-otel-metrics.git?rev=8f58e36e44cfbea dependencies = [ "axum", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "opentelemetry 0.21.0", "opentelemetry-prometheus 0.14.1", @@ -903,7 +903,7 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -1569,9 +1569,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -3074,7 +3074,7 @@ dependencies = [ "hex-literal", "hkdf", "hmac", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "humantime", @@ -3288,7 +3288,7 @@ dependencies = [ "tracing-appender", "tracing-flame", "tracing-opentelemetry 0.28.0", - "tracing-serde", + "tracing-serde 0.1.3", "tracing-slog", "tracing-subscriber", "trust-dns-resolver", @@ -4355,7 +4355,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 1.1.0", + "http 1.2.0", "indexmap 2.2.6", "slab", "tokio", @@ -4432,7 +4432,7 @@ dependencies = [ "base64 0.21.4", "bytes", "headers-core 0.3.0", - "http 1.1.0", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -4453,7 +4453,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4655,9 +4655,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -4682,7 +4682,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4704,7 +4704,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -4780,7 +4780,7 @@ dependencies = [ "futures-channel", "futures-util", "h2 0.4.4", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -4800,7 +4800,7 @@ dependencies = [ "bytes", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-util", @@ -4834,7 +4834,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "log", @@ -4854,7 +4854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51c227614c208f7e7c2e040526912604a1a957fe467c9c2f5b06c5d032337dab" dependencies = [ "async-socks5", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "thiserror 1.0.68", @@ -4884,7 +4884,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "hyper 1.5.1", "pin-project-lite", @@ -4930,7 +4930,7 @@ dependencies = [ "ed25519-consensus", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-to-bytes", "http-body-util", @@ -4987,7 +4987,7 @@ dependencies = [ "futures-util", "hickory-proto", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "humantime", @@ -5293,7 +5293,7 @@ dependencies = [ "bytes", "candid", "futures", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "ic-agent", @@ -5889,7 +5889,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -6153,7 +6153,7 @@ dependencies = [ "either", "futures", "home", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -6187,7 +6187,7 @@ checksum = "cce373a74d787d439063cdefab0f3672860bd7bac01a38e39019177e764a0fe6" dependencies = [ "chrono", "form_urlencoded", - "http 1.1.0", + "http 1.2.0", "k8s-openapi", "serde", "serde_json", @@ -6816,7 +6816,7 @@ dependencies = [ "duration-string", "exitcode", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -7028,7 +7028,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.1.0", + "http 1.2.0", "httparse", "memchr", "mime", @@ -7484,7 +7484,7 @@ checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" dependencies = [ "async-trait", "futures-core", - "http 1.1.0", + "http 1.2.0", "opentelemetry 0.27.0", "opentelemetry-proto", "opentelemetry_sdk 0.27.0", @@ -9237,7 +9237,7 @@ dependencies = [ "futures-util", "h2 0.4.4", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -9628,7 +9628,7 @@ dependencies = [ "chrono", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "log", "pem 3.0.4", "rcgen", @@ -11306,9 +11306,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -11345,9 +11345,9 @@ dependencies = [ [[package]] name = "tokio-metrics" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eace09241d62c98b7eeb1107d4c5c64ca3bd7da92e8c218c153ab3a78f9be112" +checksum = "cb2bb07a8451c4c6fa8b3497ad198510d8b8dffa5df5cfb97a64102a58b113c8" dependencies = [ "futures-util", "pin-project-lite", @@ -11453,9 +11453,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -11517,7 +11517,7 @@ dependencies = [ "base64 0.22.1", "bytes", "h2 0.4.4", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -11598,7 +11598,7 @@ dependencies = [ "base64 0.21.4", "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -11619,7 +11619,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "futures-core", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "pin-project-lite", @@ -11644,7 +11644,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357a1f99dd439c1aa9ebbaf9c6431b41c05a26bf137e9e92879941bdac5cb66d" dependencies = [ - "http 1.1.0", + "http 1.2.0", "tower-layer", "tower-service", "ulid", @@ -11679,7 +11679,7 @@ dependencies = [ "axum", "forwarded-header-value", "governor", - "http 1.1.0", + "http 1.2.0", "pin-project", "thiserror 1.0.68", "tower 0.4.13", @@ -11688,9 +11688,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -11712,9 +11712,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -11723,9 +11723,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -11794,6 +11794,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-slog" version = "0.2.0" @@ -11807,9 +11817,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -11824,7 +11834,7 @@ dependencies = [ "tracing", "tracing-core", "tracing-log", - "tracing-serde", + "tracing-serde 0.2.0", ] [[package]] @@ -11902,7 +11912,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand 0.8.5", diff --git a/Cargo.Bazel.json.lock b/Cargo.Bazel.json.lock index 57dab66de73..d0949c64615 100644 --- a/Cargo.Bazel.json.lock +++ b/Cargo.Bazel.json.lock @@ -1,5 +1,5 @@ { - "checksum": "9504732445804a8b57396f4c87d76da0f2cd5c9d2a16e0a13b9f08cc4dd54070", + "checksum": "b344eca479cfedf88abc9bad22dc5e3b5058749d7e97869732d8137396906468", "crates": { "abnf 0.12.0": { "name": "abnf", @@ -197,7 +197,7 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -217,15 +217,15 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -317,7 +317,7 @@ "target": "brotli" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -389,15 +389,15 @@ "target": "smallvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -541,7 +541,7 @@ "target": "serde" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -601,7 +601,7 @@ "target": "futures_core" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -696,11 +696,11 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -909,7 +909,7 @@ "target": "ahash" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -1630,7 +1630,7 @@ "target": "axum" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -1638,7 +1638,7 @@ "target": "cfg_if" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -1670,7 +1670,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -3420,7 +3420,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -3485,7 +3485,7 @@ "target": "futures" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -3577,7 +3577,7 @@ "target": "slab" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -3822,7 +3822,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -3874,7 +3874,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -4162,7 +4162,7 @@ "target": "futures_rustls" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4497,7 +4497,7 @@ "target": "axum_core" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4505,7 +4505,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4569,7 +4569,7 @@ "target": "sync_wrapper" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -4585,7 +4585,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -4655,7 +4655,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4663,7 +4663,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4695,7 +4695,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -4772,7 +4772,7 @@ "target": "axum_core" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -4788,7 +4788,7 @@ "target": "headers" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -4942,7 +4942,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -5036,7 +5036,7 @@ "target": "arc_swap" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -5044,7 +5044,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -5076,7 +5076,7 @@ "target": "rustls_pemfile" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -5166,7 +5166,7 @@ "target": "rand" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio", "alias": "tokio_1" } @@ -5227,7 +5227,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -9203,14 +9203,14 @@ ], "license_file": "LICENSE-MIT" }, - "bytes 1.8.0": { + "bytes 1.9.0": { "name": "bytes", - "version": "1.8.0", + "version": "1.9.0", "package_url": "https://github.com/tokio-rs/bytes", "repository": { "Http": { - "url": "https://static.crates.io/crates/bytes/1.8.0/download", - "sha256": "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" + "url": "https://static.crates.io/crates/bytes/1.9.0/download", + "sha256": "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" } }, "targets": [ @@ -9250,7 +9250,7 @@ "selects": {} }, "edition": "2018", - "version": "1.8.0" + "version": "1.9.0" }, "license": "MIT", "license_ids": [ @@ -9334,7 +9334,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -12985,7 +12985,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -14923,7 +14923,7 @@ "target": "tinytemplate" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -18385,7 +18385,7 @@ "target": "byteorder" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -18601,7 +18601,7 @@ "target": "hmac" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -19343,7 +19343,7 @@ "target": "time" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -19351,7 +19351,7 @@ "target": "tokio_io_timeout" }, { - "id": "tokio-metrics 0.3.1", + "id": "tokio-metrics 0.4.0", "target": "tokio_metrics" }, { @@ -19371,7 +19371,7 @@ "target": "tokio_test" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -19407,7 +19407,7 @@ "target": "tower_governor" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -19431,7 +19431,7 @@ "target": "tracing_slog" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" }, { @@ -22292,7 +22292,7 @@ "target": "arrayvec" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26146,7 +26146,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26178,15 +26178,15 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -26233,7 +26233,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26253,7 +26253,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -26265,15 +26265,15 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -26579,7 +26579,7 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26650,7 +26650,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -26658,7 +26658,7 @@ "target": "headers_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -26764,7 +26764,7 @@ "deps": { "common": [ { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" } ], @@ -27345,7 +27345,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -27413,7 +27413,7 @@ "target": "tinyvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -27421,7 +27421,7 @@ "target": "tokio_rustls" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -27554,7 +27554,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -27562,7 +27562,7 @@ "target": "tokio_rustls" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -27948,7 +27948,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -27972,14 +27972,14 @@ ], "license_file": "LICENSE-APACHE" }, - "http 1.1.0": { + "http 1.2.0": { "name": "http", - "version": "1.1.0", + "version": "1.2.0", "package_url": "https://github.com/hyperium/http", "repository": { "Http": { - "url": "https://static.crates.io/crates/http/1.1.0/download", - "sha256": "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" + "url": "https://static.crates.io/crates/http/1.2.0/download", + "sha256": "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" } }, "targets": [ @@ -28011,7 +28011,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28026,7 +28026,7 @@ "selects": {} }, "edition": "2018", - "version": "1.1.0" + "version": "1.2.0" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -28067,7 +28067,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28122,11 +28122,11 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" } ], @@ -28173,7 +28173,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28229,7 +28229,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28237,7 +28237,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28561,7 +28561,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28609,7 +28609,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -28617,7 +28617,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -28679,7 +28679,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28695,7 +28695,7 @@ "target": "h2" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28723,7 +28723,7 @@ "target": "smallvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -28774,7 +28774,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -28786,7 +28786,7 @@ "target": "headers" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -28802,7 +28802,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -28891,7 +28891,7 @@ "target": "rustls_native_certs" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29090,7 +29090,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29119,7 +29119,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29373,7 +29373,7 @@ "target": "async_socks5" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29389,7 +29389,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29453,7 +29453,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29521,7 +29521,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -29533,7 +29533,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -29553,7 +29553,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -29561,7 +29561,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -29807,7 +29807,7 @@ "target": "hex" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -30174,7 +30174,7 @@ "target": "webpki" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -30696,7 +30696,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -30732,7 +30732,7 @@ "target": "hickory_resolver" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -30844,7 +30844,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -30856,7 +30856,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -30868,7 +30868,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -32214,7 +32214,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -32226,7 +32226,7 @@ "target": "futures" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -32784,7 +32784,7 @@ "target": "time" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -35504,11 +35504,11 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -37119,7 +37119,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -37139,7 +37139,7 @@ "target": "home" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -37211,11 +37211,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -37227,7 +37227,7 @@ "target": "tower_http" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -37282,7 +37282,7 @@ "target": "form_urlencoded" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -39675,7 +39675,7 @@ "deps": { "common": [ { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -41709,7 +41709,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -41797,7 +41797,7 @@ "target": "simple_logger" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -42715,7 +42715,7 @@ "target": "similar" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -42979,7 +42979,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -43097,7 +43097,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -43109,7 +43109,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -45379,7 +45379,7 @@ "target": "arrayvec" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -45444,7 +45444,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -45998,7 +45998,7 @@ "target": "futures_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -46022,7 +46022,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -46030,7 +46030,7 @@ "target": "tonic" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -46773,7 +46773,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -46892,7 +46892,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -46900,7 +46900,7 @@ "target": "tokio_stream" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -49898,11 +49898,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -49910,7 +49910,7 @@ "target": "tracing_appender" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -49977,7 +49977,7 @@ "target": "cfg_if" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -52286,7 +52286,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -52351,7 +52351,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" } ], @@ -52416,7 +52416,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -52522,7 +52522,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53654,7 +53654,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53688,11 +53688,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -53748,7 +53748,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -53780,7 +53780,7 @@ "target": "tinyvec" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -53844,7 +53844,7 @@ "target": "socket2" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -56457,7 +56457,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -56520,7 +56520,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56550,7 +56550,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56580,7 +56580,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56610,7 +56610,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56640,7 +56640,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56670,7 +56670,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56700,7 +56700,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56730,7 +56730,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56760,7 +56760,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56790,7 +56790,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56820,7 +56820,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56850,7 +56850,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56900,7 +56900,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -56956,7 +56956,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -56986,7 +56986,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57016,7 +57016,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57046,7 +57046,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57076,7 +57076,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57106,7 +57106,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57136,7 +57136,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57166,7 +57166,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57196,7 +57196,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57226,7 +57226,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57256,7 +57256,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57286,7 +57286,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57316,7 +57316,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57346,7 +57346,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57376,7 +57376,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57406,7 +57406,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57436,7 +57436,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57466,7 +57466,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57496,7 +57496,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57526,7 +57526,7 @@ "target": "tokio_rustls" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57603,7 +57603,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -57615,7 +57615,7 @@ "target": "futures_util" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -57690,7 +57690,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57740,7 +57740,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57790,7 +57790,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57840,7 +57840,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57890,7 +57890,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57940,7 +57940,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -57990,7 +57990,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58040,7 +58040,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58090,7 +58090,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58140,7 +58140,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58190,7 +58190,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58240,7 +58240,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58290,7 +58290,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -58360,7 +58360,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58410,7 +58410,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58460,7 +58460,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58510,7 +58510,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58560,7 +58560,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58610,7 +58610,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58660,7 +58660,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58710,7 +58710,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58760,7 +58760,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58810,7 +58810,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58860,7 +58860,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58922,7 +58922,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -58972,7 +58972,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59022,7 +59022,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59072,7 +59072,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59122,7 +59122,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59172,7 +59172,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59222,7 +59222,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59272,7 +59272,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -59322,7 +59322,7 @@ "target": "tokio_socks" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -60115,7 +60115,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -62277,7 +62277,7 @@ "target": "futures_rustls" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -66546,7 +66546,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -66558,7 +66558,7 @@ "target": "sha2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -69558,7 +69558,7 @@ "target": "rand" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -70930,7 +70930,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -70938,11 +70938,11 @@ "target": "tokio_serde" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -73187,14 +73187,14 @@ ], "license_file": null }, - "tokio 1.41.1": { + "tokio 1.42.0": { "name": "tokio", - "version": "1.41.1", + "version": "1.42.0", "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio/1.41.1/download", - "sha256": "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" + "url": "https://static.crates.io/crates/tokio/1.42.0/download", + "sha256": "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" } }, "targets": [ @@ -73255,7 +73255,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -73686,7 +73686,7 @@ ], "selects": {} }, - "version": "1.41.1" + "version": "1.42.0" }, "license": "MIT", "license_ids": [ @@ -73730,7 +73730,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -73801,14 +73801,14 @@ ], "license_file": "LICENSE" }, - "tokio-metrics 0.3.1": { + "tokio-metrics 0.4.0": { "name": "tokio-metrics", - "version": "0.3.1", + "version": "0.4.0", "package_url": "https://github.com/tokio-rs/tokio-metrics", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio-metrics/0.3.1/download", - "sha256": "eace09241d62c98b7eeb1107d4c5c64ca3bd7da92e8c218c153ab3a78f9be112" + "url": "https://static.crates.io/crates/tokio-metrics/0.4.0/download", + "sha256": "cb2bb07a8451c4c6fa8b3497ad198510d8b8dffa5df5cfb97a64102a58b113c8" } }, "targets": [ @@ -73849,7 +73849,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -73860,7 +73860,7 @@ "selects": {} }, "edition": "2021", - "version": "0.3.1" + "version": "0.4.0" }, "license": "MIT", "license_ids": [ @@ -73913,7 +73913,7 @@ "target": "rustls" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -73979,7 +73979,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74044,7 +74044,7 @@ "alias": "pki_types" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74108,7 +74108,7 @@ "alias": "bincode_crate" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74204,7 +74204,7 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74267,7 +74267,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], @@ -74318,7 +74318,7 @@ "target": "async_stream" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74326,7 +74326,7 @@ "target": "futures_core" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74394,7 +74394,7 @@ "target": "log" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74413,14 +74413,14 @@ ], "license_file": "LICENSE" }, - "tokio-util 0.7.12": { + "tokio-util 0.7.13": { "name": "tokio-util", - "version": "0.7.12", + "version": "0.7.13", "package_url": "https://github.com/tokio-rs/tokio", "repository": { "Http": { - "url": "https://static.crates.io/crates/tokio-util/0.7.12/download", - "sha256": "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" + "url": "https://static.crates.io/crates/tokio-util/0.7.13/download", + "sha256": "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" } }, "targets": [ @@ -74463,7 +74463,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74491,14 +74491,14 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" } ], "selects": {} }, "edition": "2021", - "version": "0.7.12" + "version": "0.7.13" }, "license": "MIT", "license_ids": [ @@ -74781,7 +74781,7 @@ "target": "base64" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -74789,7 +74789,7 @@ "target": "h2" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -74829,7 +74829,7 @@ "target": "socket2" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -74849,7 +74849,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75037,11 +75037,11 @@ "target": "slab" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75053,7 +75053,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75162,11 +75162,11 @@ "target": "sync_wrapper" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75178,7 +75178,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75248,11 +75248,11 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75272,7 +75272,7 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -75284,7 +75284,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75362,7 +75362,7 @@ "target": "bitflags" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -75370,7 +75370,7 @@ "target": "futures_core" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75386,11 +75386,11 @@ "target": "pin_project_lite" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -75406,7 +75406,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -75495,7 +75495,7 @@ "deps": { "common": [ { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75600,7 +75600,7 @@ "target": "pin_project" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -75678,7 +75678,7 @@ "target": "governor" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -75694,7 +75694,7 @@ "target": "tower" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -75710,14 +75710,14 @@ ], "license_file": null }, - "tracing 0.1.40": { + "tracing 0.1.41": { "name": "tracing", - "version": "0.1.40", + "version": "0.1.41", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing/0.1.40/download", - "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" + "url": "https://static.crates.io/crates/tracing/0.1.41/download", + "sha256": "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" } }, "targets": [ @@ -75760,7 +75760,7 @@ "target": "pin_project_lite" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -75770,13 +75770,13 @@ "proc_macro_deps": { "common": [ { - "id": "tracing-attributes 0.1.27", + "id": "tracing-attributes 0.1.28", "target": "tracing_attributes" } ], "selects": {} }, - "version": "0.1.40" + "version": "0.1.41" }, "license": "MIT", "license_ids": [ @@ -75828,7 +75828,7 @@ "target": "time" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -75843,14 +75843,14 @@ ], "license_file": "LICENSE" }, - "tracing-attributes 0.1.27": { + "tracing-attributes 0.1.28": { "name": "tracing-attributes", - "version": "0.1.27", + "version": "0.1.28", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-attributes/0.1.27/download", - "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" + "url": "https://static.crates.io/crates/tracing-attributes/0.1.28/download", + "sha256": "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" } }, "targets": [ @@ -75890,7 +75890,7 @@ "selects": {} }, "edition": "2018", - "version": "0.1.27" + "version": "0.1.28" }, "license": "MIT", "license_ids": [ @@ -75898,14 +75898,14 @@ ], "license_file": "LICENSE" }, - "tracing-core 0.1.32": { + "tracing-core 0.1.33": { "name": "tracing-core", - "version": "0.1.32", + "version": "0.1.33", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-core/0.1.32/download", - "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" + "url": "https://static.crates.io/crates/tracing-core/0.1.33/download", + "sha256": "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" } }, "targets": [ @@ -75945,7 +75945,7 @@ "selects": {} }, "edition": "2018", - "version": "0.1.32" + "version": "0.1.33" }, "license": "MIT", "license_ids": [ @@ -75996,11 +75996,11 @@ "target": "lazy_static" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76062,7 +76062,7 @@ "target": "once_cell" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76117,15 +76117,15 @@ "target": "opentelemetry" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76197,11 +76197,11 @@ "target": "smallvec" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { @@ -76209,7 +76209,7 @@ "target": "tracing_log" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -76271,7 +76271,7 @@ "target": "serde" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76286,6 +76286,57 @@ ], "license_file": "LICENSE" }, + "tracing-serde 0.2.0": { + "name": "tracing-serde", + "version": "0.2.0", + "package_url": "https://github.com/tokio-rs/tracing", + "repository": { + "Http": { + "url": "https://static.crates.io/crates/tracing-serde/0.2.0/download", + "sha256": "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" + } + }, + "targets": [ + { + "Library": { + "crate_name": "tracing_serde", + "crate_root": "src/lib.rs", + "srcs": { + "allow_empty": true, + "include": [ + "**/*.rs" + ] + } + } + } + ], + "library_target_name": "tracing_serde", + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "serde 1.0.214", + "target": "serde" + }, + { + "id": "tracing-core 0.1.33", + "target": "tracing_core" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.2.0" + }, + "license": "MIT", + "license_ids": [ + "MIT" + ], + "license_file": "LICENSE" + }, "tracing-slog 0.2.0": { "name": "tracing-slog", "version": "0.2.0", @@ -76333,7 +76384,7 @@ "target": "slog" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" } ], @@ -76348,14 +76399,14 @@ ], "license_file": "LICENSE" }, - "tracing-subscriber 0.3.18": { + "tracing-subscriber 0.3.19": { "name": "tracing-subscriber", - "version": "0.3.18", + "version": "0.3.19", "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://static.crates.io/crates/tracing-subscriber/0.3.18/download", - "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" + "url": "https://static.crates.io/crates/tracing-subscriber/0.3.19/download", + "sha256": "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" } }, "targets": [ @@ -76446,11 +76497,11 @@ "target": "time" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-core 0.1.32", + "id": "tracing-core 0.1.33", "target": "tracing_core" }, { @@ -76458,14 +76509,14 @@ "target": "tracing_log" }, { - "id": "tracing-serde 0.1.3", + "id": "tracing-serde 0.2.0", "target": "tracing_serde" } ], "selects": {} }, "edition": "2018", - "version": "0.3.18" + "version": "0.3.19" }, "license": "MIT", "license_ids": [ @@ -76654,11 +76705,11 @@ "target": "tinyvec" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -76766,11 +76817,11 @@ "target": "thiserror" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -76894,7 +76945,7 @@ "target": "byteorder" }, { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -76902,7 +76953,7 @@ "target": "data_encoding" }, { - "id": "http 1.1.0", + "id": "http 1.2.0", "target": "http" }, { @@ -76984,7 +77035,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -77008,7 +77059,7 @@ "target": "scoped_tls" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -77020,15 +77071,15 @@ "target": "tokio_test" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { - "id": "tracing-subscriber 0.3.18", + "id": "tracing-subscriber 0.3.19", "target": "tracing_subscriber" } ], @@ -78497,7 +78548,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -78533,7 +78584,7 @@ "target": "snafu" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" }, { @@ -78997,7 +79048,7 @@ "deps": { "common": [ { - "id": "bytes 1.8.0", + "id": "bytes 1.9.0", "target": "bytes" }, { @@ -79065,7 +79116,7 @@ "target": "serde_urlencoded" }, { - "id": "tokio 1.41.1", + "id": "tokio 1.42.0", "target": "tokio" }, { @@ -79077,7 +79128,7 @@ "target": "tokio_tungstenite" }, { - "id": "tokio-util 0.7.12", + "id": "tokio-util 0.7.13", "target": "tokio_util" }, { @@ -79085,7 +79136,7 @@ "target": "tower_service" }, { - "id": "tracing 0.1.40", + "id": "tracing 0.1.41", "target": "tracing" } ], @@ -87499,7 +87550,7 @@ "by_address 1.1.0", "byte-unit 4.0.19", "byteorder 1.5.0", - "bytes 1.8.0", + "bytes 1.9.0", "cached 0.49.2", "canbench 0.1.8", "canbench-rs 0.1.8", @@ -87554,7 +87605,7 @@ "hex-literal 0.4.1", "hkdf 0.12.4", "hmac 0.12.1", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util 0.1.2", "humantime 2.1.0", @@ -87748,14 +87799,14 @@ "tikv-jemalloc-ctl 0.5.4", "tikv-jemallocator 0.5.4", "time 0.3.36", - "tokio 1.41.1", + "tokio 1.42.0", "tokio-io-timeout 1.2.0", - "tokio-metrics 0.3.1", + "tokio-metrics 0.4.0", "tokio-rustls 0.26.0", "tokio-serde 0.8.0", "tokio-socks 0.5.2", "tokio-test 0.4.4", - "tokio-util 0.7.12", + "tokio-util 0.7.13", "toml 0.5.11", "tonic 0.12.3", "tonic-build 0.12.3", @@ -87764,13 +87815,13 @@ "tower-request-id 0.3.0", "tower-test 0.4.0", "tower_governor 0.4.2", - "tracing 0.1.40", + "tracing 0.1.41", "tracing-appender 0.2.3", "tracing-flame 0.2.0", "tracing-opentelemetry 0.28.0", "tracing-serde 0.1.3", "tracing-slog 0.2.0", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.19", "trust-dns-resolver 0.22.0", "turmoil 0.6.4", "url 2.5.3", diff --git a/Cargo.Bazel.toml.lock b/Cargo.Bazel.toml.lock index 19932d0dfb3..949f5b8aeee 100644 --- a/Cargo.Bazel.toml.lock +++ b/Cargo.Bazel.toml.lock @@ -300,7 +300,7 @@ dependencies = [ "axum", "bytes", "cfg-if 1.0.0", - "http 1.1.0", + "http 1.2.0", "indexmap 2.2.6", "schemars", "serde", @@ -607,7 +607,7 @@ checksum = "096146020b08dbc4587685b0730a7ba905625af13c65f8028035cdfd69573c91" dependencies = [ "anyhow", "futures", - "http 1.1.0", + "http 1.2.0", "httparse", "log", ] @@ -734,7 +734,7 @@ dependencies = [ "async-net", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "lazy_static", "log", "rustls-pki-types", @@ -797,7 +797,7 @@ dependencies = [ "axum-macros", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -830,7 +830,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -854,7 +854,7 @@ dependencies = [ "fastrand 2.1.0", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -884,7 +884,7 @@ source = "git+https://github.com/ttys3/axum-otel-metrics.git?rev=8f58e36e44cfbea dependencies = [ "axum", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "opentelemetry 0.21.0", "opentelemetry-prometheus 0.14.1", @@ -904,7 +904,7 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -1570,9 +1570,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -3063,7 +3063,7 @@ dependencies = [ "hex-literal", "hkdf", "hmac", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "humantime", @@ -3277,7 +3277,7 @@ dependencies = [ "tracing-appender", "tracing-flame", "tracing-opentelemetry 0.28.0", - "tracing-serde", + "tracing-serde 0.1.3", "tracing-slog", "tracing-subscriber", "trust-dns-resolver", @@ -4344,7 +4344,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 1.1.0", + "http 1.2.0", "indexmap 2.2.6", "slab", "tokio", @@ -4422,7 +4422,7 @@ dependencies = [ "base64 0.21.6", "bytes", "headers-core 0.3.0", - "http 1.1.0", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -4443,7 +4443,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4645,9 +4645,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -4672,7 +4672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4694,7 +4694,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -4770,7 +4770,7 @@ dependencies = [ "futures-channel", "futures-util", "h2 0.4.4", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -4790,7 +4790,7 @@ dependencies = [ "bytes", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-util", @@ -4824,7 +4824,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "log", @@ -4844,7 +4844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51c227614c208f7e7c2e040526912604a1a957fe467c9c2f5b06c5d032337dab" dependencies = [ "async-socks5", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "thiserror 1.0.68", @@ -4874,7 +4874,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "hyper 1.5.1", "pin-project-lite", @@ -4920,7 +4920,7 @@ dependencies = [ "ed25519-consensus", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-to-bytes", "http-body-util", @@ -4977,7 +4977,7 @@ dependencies = [ "futures-util", "hickory-proto", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "humantime", @@ -5283,7 +5283,7 @@ dependencies = [ "bytes", "candid", "futures", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "ic-agent", @@ -5879,7 +5879,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -6143,7 +6143,7 @@ dependencies = [ "either", "futures", "home", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -6177,7 +6177,7 @@ checksum = "cce373a74d787d439063cdefab0f3672860bd7bac01a38e39019177e764a0fe6" dependencies = [ "chrono", "form_urlencoded", - "http 1.1.0", + "http 1.2.0", "k8s-openapi", "serde", "serde_json", @@ -6807,7 +6807,7 @@ dependencies = [ "duration-string", "exitcode", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -7019,7 +7019,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.1.0", + "http 1.2.0", "httparse", "memchr", "mime", @@ -7475,7 +7475,7 @@ checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" dependencies = [ "async-trait", "futures-core", - "http 1.1.0", + "http 1.2.0", "opentelemetry 0.27.0", "opentelemetry-proto", "opentelemetry_sdk 0.27.0", @@ -9233,7 +9233,7 @@ dependencies = [ "futures-util", "h2 0.4.4", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -9624,7 +9624,7 @@ dependencies = [ "chrono", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "log", "pem 3.0.3", "rcgen", @@ -11302,9 +11302,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -11341,9 +11341,9 @@ dependencies = [ [[package]] name = "tokio-metrics" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eace09241d62c98b7eeb1107d4c5c64ca3bd7da92e8c218c153ab3a78f9be112" +checksum = "cb2bb07a8451c4c6fa8b3497ad198510d8b8dffa5df5cfb97a64102a58b113c8" dependencies = [ "futures-util", "pin-project-lite", @@ -11449,9 +11449,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -11513,7 +11513,7 @@ dependencies = [ "base64 0.22.1", "bytes", "h2 0.4.4", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -11594,7 +11594,7 @@ dependencies = [ "base64 0.21.6", "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -11615,7 +11615,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "futures-core", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "pin-project-lite", @@ -11640,7 +11640,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357a1f99dd439c1aa9ebbaf9c6431b41c05a26bf137e9e92879941bdac5cb66d" dependencies = [ - "http 1.1.0", + "http 1.2.0", "tower-layer", "tower-service", "ulid", @@ -11675,7 +11675,7 @@ dependencies = [ "axum", "forwarded-header-value", "governor", - "http 1.1.0", + "http 1.2.0", "pin-project", "thiserror 1.0.68", "tower 0.4.13", @@ -11684,9 +11684,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -11708,9 +11708,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -11719,9 +11719,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -11790,6 +11790,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-slog" version = "0.2.0" @@ -11803,9 +11813,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -11820,7 +11830,7 @@ dependencies = [ "tracing", "tracing-core", "tracing-log", - "tracing-serde", + "tracing-serde 0.2.0", ] [[package]] @@ -11898,7 +11908,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand 0.8.5", diff --git a/Cargo.lock b/Cargo.lock index c5c1eb3fde9..604edc80b6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "abnf" @@ -299,7 +299,7 @@ dependencies = [ "axum", "bytes", "cfg-if 1.0.0", - "http 1.1.0", + "http 1.2.0", "indexmap 2.6.0", "schemars", "serde", @@ -372,6 +372,7 @@ dependencies = [ "candid", "ic-canister-client", "ic-types", + "prometheus", "rand 0.8.5", "rsa", "thiserror 2.0.3", @@ -649,7 +650,7 @@ checksum = "096146020b08dbc4587685b0730a7ba905625af13c65f8028035cdfd69573c91" dependencies = [ "anyhow", "futures", - "http 1.1.0", + "http 1.2.0", "httparse", "log", ] @@ -776,7 +777,7 @@ dependencies = [ "async-net", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "lazy_static", "log", "rustls-pki-types", @@ -837,7 +838,7 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -870,7 +871,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -893,7 +894,7 @@ dependencies = [ "bytes", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -914,7 +915,7 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -1558,9 +1559,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1684,7 +1685,7 @@ dependencies = [ "bytes", "clap 4.5.20", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -1928,7 +1929,7 @@ dependencies = [ "cloudflare 0.12.0 (git+https://github.com/dfinity/cloudflare-rs.git?rev=a6538a036926bd756986c9c0a5de356daef48881)", "flate2", "futures", - "http 1.1.0", + "http 1.2.0", "ic-agent 0.37.1", "ic-http-certification", "ic-response-verification", @@ -2207,7 +2208,7 @@ dependencies = [ [[package]] name = "cloner-canister-types" -version = "0.1.0" +version = "0.9.0" dependencies = [ "candid", "futures", @@ -2409,7 +2410,6 @@ version = "0.9.0" dependencies = [ "anyhow", "canister-test", - "canister_http", "ic-agent 0.37.1", "ic-base-types", "ic-interfaces-registry", @@ -4423,7 +4423,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pki-types", ] @@ -4636,7 +4636,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap 2.6.0", "slab", "tokio", @@ -4732,7 +4732,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core 0.3.0", - "http 1.1.0", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -4753,7 +4753,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -4968,9 +4968,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -4995,7 +4995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -5017,7 +5017,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -5047,7 +5047,7 @@ dependencies = [ "clap 4.5.20", "hyper 1.5.1", "hyper-util", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pemfile 2.2.0", "serde_json", "tokio", @@ -5120,7 +5120,7 @@ dependencies = [ "futures-channel", "futures-util", "h2 0.4.6", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -5140,7 +5140,7 @@ dependencies = [ "bytes", "futures-util", "headers 0.4.0", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-util", @@ -5172,11 +5172,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "log", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", @@ -5192,7 +5192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51c227614c208f7e7c2e040526912604a1a957fe467c9c2f5b06c5d032337dab" dependencies = [ "async-socks5", - "http 1.1.0", + "http 1.2.0", "hyper 1.5.1", "hyper-util", "thiserror 1.0.68", @@ -5222,7 +5222,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "hyper 1.5.1", "pin-project-lite", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "ic-adapter-metrics-server" -version = "0.1.0" +version = "0.9.0" dependencies = [ "futures", "ic-adapter-metrics-service", @@ -5286,7 +5286,7 @@ dependencies = [ [[package]] name = "ic-adapter-metrics-service" -version = "0.1.0" +version = "0.9.0" dependencies = [ "prost 0.13.3", "prost-build 0.13.3", @@ -5385,7 +5385,7 @@ dependencies = [ "ed25519-consensus", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-to-bytes", "http-body-util", @@ -5436,7 +5436,7 @@ dependencies = [ "elliptic-curve", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "ic-certification 2.6.0", "ic-transport-types 0.39.1", @@ -5465,7 +5465,7 @@ dependencies = [ [[package]] name = "ic-artifact-downloader" -version = "0.1.0" +version = "0.9.0" dependencies = [ "anyhow", "axum", @@ -5684,7 +5684,7 @@ dependencies = [ "futures-util", "hickory-proto", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "humantime", @@ -5700,7 +5700,7 @@ dependencies = [ "rand 0.8.5", "rcgen", "reqwest 0.12.9", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-acme", "rustls-pemfile 2.2.0", "rustls-platform-verifier", @@ -5748,7 +5748,7 @@ dependencies = [ "futures", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "humantime", "ic-agent 0.39.1", @@ -5788,11 +5788,12 @@ dependencies = [ "nix 0.24.3", "prometheus", "rand 0.8.5", + "rate-limits-api", "ratelimit", "rcgen", "regex", "reqwest 0.12.9", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pemfile 2.2.0", "serde", "serde_bytes", @@ -5813,7 +5814,7 @@ dependencies = [ "tower-http 0.6.2", "tower_governor", "tracing", - "tracing-serde", + "tracing-serde 0.1.3", "tracing-slog", "tracing-subscriber", "url", @@ -5920,7 +5921,7 @@ dependencies = [ "futures", "hashlink", "hex", - "http 1.1.0", + "http 1.2.0", "hyper-util", "ic-adapter-metrics-server", "ic-async-utils", @@ -5986,6 +5987,39 @@ dependencies = [ "tokio", ] +[[package]] +name = "ic-btc-checker" +version = "0.9.0" +dependencies = [ + "askama", + "base64 0.13.1", + "bitcoin 0.32.3", + "candid", + "candid_parser", + "ciborium", + "futures", + "hex", + "ic-base-types", + "ic-btc-interface", + "ic-canister-log 0.2.0", + "ic-canisters-http-types", + "ic-cdk 0.16.0", + "ic-metrics-encoder", + "ic-stable-structures", + "ic-test-utilities-load-wasm", + "ic-types", + "ic-universal-canister", + "num-traits", + "pocket-ic", + "proptest", + "scraper", + "serde", + "serde_json", + "time", + "tokio", + "url", +] + [[package]] name = "ic-btc-consensus" version = "0.9.0" @@ -6031,38 +6065,6 @@ dependencies = [ "serde_bytes", ] -[[package]] -name = "ic-btc-kyt" -version = "0.9.0" -dependencies = [ - "askama", - "base64 0.13.1", - "bitcoin 0.32.3", - "candid", - "candid_parser", - "ciborium", - "futures", - "hex", - "ic-base-types", - "ic-btc-interface", - "ic-canister-log 0.2.0", - "ic-canisters-http-types", - "ic-cdk 0.16.0", - "ic-metrics-encoder", - "ic-stable-structures", - "ic-test-utilities-load-wasm", - "ic-types", - "ic-universal-canister", - "num-traits", - "pocket-ic", - "scraper", - "serde", - "serde_json", - "time", - "tokio", - "url", -] - [[package]] name = "ic-btc-replica-types" version = "0.9.0" @@ -6095,7 +6097,7 @@ dependencies = [ [[package]] name = "ic-btc-validation" -version = "0.1.0" +version = "0.9.0" dependencies = [ "bitcoin 0.28.2", "csv", @@ -6132,7 +6134,7 @@ dependencies = [ "prost 0.13.3", "rand 0.8.5", "rand_chacha 0.3.1", - "rustls 0.23.18", + "rustls 0.23.19", "serde", "serde_cbor", "tokio", @@ -6632,8 +6634,8 @@ dependencies = [ "ic-agent 0.37.1", "ic-base-types", "ic-bitcoin-canister-mock", + "ic-btc-checker", "ic-btc-interface", - "ic-btc-kyt", "ic-canister-log 0.2.0", "ic-canisters-http-types", "ic-cdk 0.16.0", @@ -6673,7 +6675,7 @@ dependencies = [ [[package]] name = "ic-cketh-minter" -version = "0.1.0" +version = "0.9.0" dependencies = [ "askama", "assert_matches", @@ -6855,7 +6857,7 @@ dependencies = [ [[package]] name = "ic-consensus-manager" -version = "0.1.0" +version = "0.9.0" dependencies = [ "anyhow", "axum", @@ -7022,7 +7024,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rsa", - "rustls 0.23.18", + "rustls 0.23.19", "serde", "sha2 0.10.8", "simple_asn1", @@ -7096,7 +7098,7 @@ dependencies = [ [[package]] name = "ic-crypto-iccsa" -version = "0.1.0" +version = "0.9.0" dependencies = [ "ic-crypto-internal-basic-sig-iccsa", ] @@ -7110,7 +7112,7 @@ dependencies = [ [[package]] name = "ic-crypto-internal-basic-sig-cose" -version = "0.1.0" +version = "0.9.0" dependencies = [ "hex", "ic-crypto-internal-basic-sig-der-utils", @@ -7619,7 +7621,7 @@ dependencies = [ [[package]] name = "ic-crypto-node-key-generation" -version = "0.1.0" +version = "0.9.0" dependencies = [ "assert_matches", "hex", @@ -7675,7 +7677,7 @@ dependencies = [ [[package]] name = "ic-crypto-prng" -version = "0.1.0" +version = "0.9.0" dependencies = [ "ic-crypto-sha2", "ic-types", @@ -7782,7 +7784,7 @@ dependencies = [ "ic-types-test-utils", "rand 0.8.5", "rand_chacha 0.3.1", - "rustls 0.23.18", + "rustls 0.23.19", "tempfile", "tokio", ] @@ -7982,7 +7984,7 @@ dependencies = [ "ic-types", "pkcs8", "rand 0.8.5", - "rustls 0.23.18", + "rustls 0.23.19", "signature", "time", "tokio", @@ -8018,7 +8020,7 @@ dependencies = [ "ic-types", "json5", "maplit", - "rustls 0.23.18", + "rustls 0.23.19", "serde", "thiserror 2.0.3", "x509-parser", @@ -8031,7 +8033,7 @@ dependencies = [ "ic-base-types", "ic-crypto-tls-interfaces", "mockall", - "rustls 0.23.18", + "rustls 0.23.19", ] [[package]] @@ -8089,7 +8091,7 @@ dependencies = [ [[package]] name = "ic-crypto-utils-ni-dkg" -version = "0.8.0" +version = "0.9.0" dependencies = [ "ic-base-types", "ic-config", @@ -8177,7 +8179,7 @@ dependencies = [ [[package]] name = "ic-dashboard" -version = "0.1.0" +version = "0.9.0" dependencies = [ "async-trait", "tokio", @@ -8425,7 +8427,7 @@ dependencies = [ [[package]] name = "ic-exhaustive-derive" -version = "0.1.0" +version = "0.9.0" dependencies = [ "proc-macro2", "quote", @@ -8495,7 +8497,7 @@ dependencies = [ "futures", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -8548,7 +8550,7 @@ dependencies = [ "rand 0.8.5", "reqwest 0.12.9", "rstest", - "rustls 0.23.18", + "rustls 0.23.19", "serde", "serde_bytes", "serde_cbor", @@ -8613,7 +8615,7 @@ dependencies = [ "bytes", "candid", "futures", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "ic-agent 0.37.1", @@ -8630,7 +8632,7 @@ dependencies = [ "assert_matches", "flate2", "hex", - "http 1.1.0", + "http 1.2.0", "ic-crypto-sha2", "ic-logger", "ic-test-utilities-in-memory-logger", @@ -8645,14 +8647,14 @@ dependencies = [ [[package]] name = "ic-https-outcalls-adapter" -version = "0.1.0" +version = "0.9.0" dependencies = [ "async-stream", "byte-unit", "bytes", "clap 4.5.20", "futures", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper 1.5.1", "hyper-rustls 0.27.3", @@ -8668,7 +8670,7 @@ dependencies = [ "prometheus", "rand 0.8.5", "rstest", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pemfile 2.2.0", "serde", "serde_json", @@ -8685,7 +8687,7 @@ dependencies = [ [[package]] name = "ic-https-outcalls-adapter-client" -version = "0.1.0" +version = "0.9.0" dependencies = [ "candid", "futures", @@ -8750,7 +8752,7 @@ dependencies = [ [[package]] name = "ic-https-outcalls-service" -version = "0.1.0" +version = "0.9.0" dependencies = [ "prost 0.13.3", "tonic", @@ -9013,7 +9015,7 @@ dependencies = [ [[package]] name = "ic-icrc1-benchmark-worker" -version = "0.1.0" +version = "0.9.0" dependencies = [ "async-trait", "candid", @@ -9183,7 +9185,7 @@ dependencies = [ [[package]] name = "ic-icrc1-tokens-u256" -version = "0.1.0" +version = "0.9.0" dependencies = [ "candid", "ciborium", @@ -9201,7 +9203,7 @@ dependencies = [ [[package]] name = "ic-icrc1-tokens-u64" -version = "0.1.0" +version = "0.9.0" dependencies = [ "candid", "ciborium", @@ -9448,7 +9450,7 @@ dependencies = [ [[package]] name = "ic-ledger-suite-orchestrator" -version = "0.1.0" +version = "0.9.0" dependencies = [ "askama", "assert_matches", @@ -9660,7 +9662,7 @@ dependencies = [ [[package]] name = "ic-memory-transport" -version = "0.1.0" +version = "0.9.0" dependencies = [ "anyhow", "async-trait", @@ -10091,6 +10093,24 @@ dependencies = [ "tokio", ] +[[package]] +name = "ic-nervous-system-long-message" +version = "0.0.1" +dependencies = [ + "candid", + "canister-test", + "dfn_candid", + "ic-cdk 0.16.0", + "ic-cdk-timers", + "ic-config", + "ic-nervous-system-temporary", + "ic-nns-test-utils", + "ic-registry-subnet-type", + "ic-state-machine-tests", + "ic-types", + "serde", +] + [[package]] name = "ic-nervous-system-proto" version = "0.9.0" @@ -10162,6 +10182,13 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "ic-nervous-system-timestamp" +version = "0.0.1" +dependencies = [ + "time", +] + [[package]] name = "ic-networking-subnet-update-workload" version = "0.9.0" @@ -10299,6 +10326,7 @@ dependencies = [ "ic-nervous-system-common-test-utils", "ic-nervous-system-governance", "ic-nervous-system-linear-map", + "ic-nervous-system-long-message", "ic-nervous-system-proto", "ic-nervous-system-root", "ic-nervous-system-runtime", @@ -10360,6 +10388,7 @@ dependencies = [ "ic-base-types", "ic-crypto-sha2", "ic-nervous-system-clients", + "ic-nervous-system-common", "ic-nervous-system-common-validation", "ic-nervous-system-proto", "ic-nns-common", @@ -10564,6 +10593,7 @@ dependencies = [ "csv", "hex", "ic-base-types", + "ic-ledger-canister-core", "ic-nns-constants", "ic-nns-governance-api", "ic-nns-gtc", @@ -10649,6 +10679,7 @@ dependencies = [ "on_wire", "phantom_newtype", "pocket-ic", + "pretty_assertions", "prometheus-parse", "prost 0.13.3", "rand 0.8.5", @@ -10756,7 +10787,7 @@ dependencies = [ [[package]] name = "ic-p2p-test-utils" -version = "0.1.0" +version = "0.9.0" dependencies = [ "anyhow", "async-trait", @@ -10793,7 +10824,7 @@ dependencies = [ "quinn", "quinn-udp", "rcgen", - "rustls 0.23.18", + "rustls 0.23.19", "serde", "slog", "tempfile", @@ -10803,7 +10834,7 @@ dependencies = [ [[package]] name = "ic-peer-manager" -version = "0.1.0" +version = "0.9.0" dependencies = [ "ic-base-types", "ic-interfaces", @@ -10931,7 +10962,7 @@ dependencies = [ [[package]] name = "ic-quic-transport" -version = "0.1.0" +version = "0.9.0" dependencies = [ "anyhow", "assert_matches", @@ -10940,7 +10971,7 @@ dependencies = [ "bytes", "criterion", "futures", - "http 1.1.0", + "http 1.2.0", "ic-async-utils", "ic-base-types", "ic-crypto-tls-interfaces", @@ -10957,9 +10988,10 @@ dependencies = [ "prost 0.13.3", "quinn", "rstest", - "rustls 0.23.18", + "rustls 0.23.19", "slog", "socket2 0.5.7", + "static_assertions", "thiserror 2.0.3", "tokio", "tokio-metrics", @@ -10985,7 +11017,7 @@ dependencies = [ [[package]] name = "ic-recovery" -version = "0.1.0" +version = "0.9.0" dependencies = [ "base64 0.13.1", "clap 4.5.20", @@ -11261,7 +11293,7 @@ dependencies = [ [[package]] name = "ic-registry-replicator" -version = "0.1.0" +version = "0.9.0" dependencies = [ "clap 4.5.20", "ic-config", @@ -11867,6 +11899,7 @@ dependencies = [ "base64 0.13.1", "build-info", "build-info-build", + "canbench-rs", "candid", "candid_parser", "clap 4.5.20", @@ -11900,6 +11933,7 @@ dependencies = [ "ic-nervous-system-proto", "ic-nervous-system-root", "ic-nervous-system-runtime", + "ic-nervous-system-timestamp", "ic-nns-constants", "ic-protobuf", "ic-sns-governance", @@ -11932,7 +11966,6 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "time", "tokio", "tokio-test", ] @@ -12547,7 +12580,7 @@ dependencies = [ [[package]] name = "ic-state-sync-manager" -version = "0.1.0" +version = "0.9.0" dependencies = [ "axum", "bytes", @@ -12604,7 +12637,7 @@ dependencies = [ [[package]] name = "ic-subnet-splitting" -version = "0.1.0" +version = "0.9.0" dependencies = [ "clap 4.5.20", "hex", @@ -12712,7 +12745,7 @@ dependencies = [ "ed25519-dalek", "futures", "hex", - "http 1.1.0", + "http 1.2.0", "humantime", "humantime-serde", "hyper 1.5.1", @@ -13150,11 +13183,10 @@ dependencies = [ "dfn_candid", "ic-agent 0.37.1", "ic-base-types", + "ic-btc-checker", "ic-btc-interface", - "ic-btc-kyt", "ic-canister-client", "ic-ckbtc-agent", - "ic-ckbtc-kyt", "ic-ckbtc-minter", "ic-config", "ic-icrc1-ledger", @@ -13402,14 +13434,14 @@ version = "0.9.0" [[package]] name = "ic-validate-eq" -version = "0.0.0" +version = "0.9.0" dependencies = [ "ic-validate-eq-derive", ] [[package]] name = "ic-validate-eq-derive" -version = "0.0.0" +version = "0.9.0" dependencies = [ "proc-macro2", "quote", @@ -13711,7 +13743,7 @@ dependencies = [ name = "ic-xnet-uri" version = "0.9.0" dependencies = [ - "http 1.1.0", + "http 1.2.0", "ic-types", ] @@ -13970,7 +14002,7 @@ dependencies = [ [[package]] name = "icp-config" -version = "0.1.0" +version = "0.9.0" dependencies = [ "clap 4.5.20", "eyre", @@ -14008,6 +14040,7 @@ dependencies = [ "ic-ledger-test-utils", "ic-nns-constants", "ic-nns-test-utils-golden-nns-state", + "ic-stable-structures", "ic-state-machine-tests", "ic-test-utilities-compare-dirs", "icrc-ledger-types", @@ -14513,7 +14546,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -14786,7 +14819,7 @@ dependencies = [ "either", "futures", "home", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -14798,7 +14831,7 @@ dependencies = [ "k8s-openapi", "kube-core", "pem 3.0.4", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pemfile 2.2.0", "secrecy", "serde", @@ -14820,7 +14853,7 @@ checksum = "cce373a74d787d439063cdefab0f3672860bd7bac01a38e39019177e764a0fe6" dependencies = [ "chrono", "form_urlencoded", - "http 1.1.0", + "http 1.2.0", "k8s-openapi", "serde", "serde_json", @@ -14992,6 +15025,7 @@ dependencies = [ "ic-base-types", "ic-canister-log 0.2.0", "ic-cdk 0.16.0", + "ic-cdk-timers", "ic-error-types", "ic-icrc1", "ic-icrc1-test-utils", @@ -15008,8 +15042,10 @@ dependencies = [ "icrc-ledger-types", "intmap", "lazy_static", + "minicbor", "num-traits", "on_wire", + "proptest", "serde", "serde_bytes", "serde_cbor", @@ -15319,7 +15355,7 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "local_key" -version = "0.1.0" +version = "0.9.0" dependencies = [ "pin-project-lite", ] @@ -15763,7 +15799,7 @@ dependencies = [ "bytes", "colored", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -16097,6 +16133,7 @@ dependencies = [ "ic-registry-canister-api", "ic-registry-subnet-type", "ic-system-test-driver", + "ic_consensus_system_test_utils", "indoc", "k256", "registry-canister", @@ -16438,7 +16475,7 @@ checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" dependencies = [ "async-trait", "futures-core", - "http 1.1.0", + "http 1.2.0", "opentelemetry 0.27.0", "opentelemetry-proto", "opentelemetry_sdk 0.27.0", @@ -17242,7 +17279,7 @@ dependencies = [ "fqdn 0.3.12", "futures", "hex", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper 1.5.1", "hyper-util", @@ -17915,7 +17952,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.18", + "rustls 0.23.19", "socket2 0.5.7", "thiserror 1.0.68", "tokio", @@ -17932,7 +17969,7 @@ dependencies = [ "rand 0.8.5", "ring 0.17.8", "rustc-hash 2.0.0", - "rustls 0.23.18", + "rustls 0.23.19", "slab", "thiserror 1.0.68", "tinyvec", @@ -18136,8 +18173,10 @@ name = "random-traffic-test" version = "0.9.0" dependencies = [ "candid", - "dfn_core", + "futures", "ic-base-types", + "ic-cdk 0.16.0", + "ic-cdk-macros 0.9.0", "ic-error-types", "ic-types", "rand 0.8.5", @@ -18175,10 +18214,15 @@ name = "rate-limits-api" version = "0.9.0" dependencies = [ "candid", + "humantime", + "ic-bn-lib", + "indoc", "regex", "serde", "serde_bytes", "serde_json", + "serde_regex", + "serde_yaml", ] [[package]] @@ -18455,9 +18499,10 @@ dependencies = [ name = "rejoin-test-lib" version = "0.9.0" dependencies = [ + "candid", "canister-test", "chrono", - "dfn_json", + "dfn_candid", "futures", "ic-system-test-driver", "slog", @@ -18535,7 +18580,7 @@ dependencies = [ "futures-util", "h2 0.4.6", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -18550,7 +18595,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-native-certs 0.8.0", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -18965,9 +19010,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.18" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9cc1d47e243d655ace55ed38201c19ae02c148ae56412ab8750e8f0166ab7f" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "brotli 7.0.0", "brotli-decompressor", @@ -18994,7 +19039,7 @@ dependencies = [ "chrono", "futures", "futures-rustls", - "http 1.1.0", + "http 1.2.0", "log", "pem 3.0.4", "rcgen", @@ -19067,7 +19112,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.18", + "rustls 0.23.19", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -20152,10 +20197,12 @@ dependencies = [ name = "statesync-test" version = "0.9.0" dependencies = [ + "candid", "canister-test", - "dfn_core", - "dfn_json", - "dfn_macro", + "ic-cdk 0.16.0", + "ic-cdk-macros 0.9.0", + "ic-management-canister-types", + "ic-state-machine-tests", "ic-test-utilities", "ic-types", "lazy_static", @@ -20439,7 +20486,7 @@ dependencies = [ "async-trait", "axum", "clap 4.5.20", - "http 1.1.0", + "http 1.2.0", "itertools 0.12.1", "reqwest 0.12.9", "thiserror 2.0.3", @@ -21027,7 +21074,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tla_instrumentation" -version = "0.1.0" +version = "0.9.0" dependencies = [ "candid", "local_key", @@ -21039,7 +21086,7 @@ dependencies = [ [[package]] name = "tla_instrumentation_proc_macros" -version = "0.1.0" +version = "0.9.0" dependencies = [ "proc-macro2", "quote", @@ -21069,9 +21116,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -21108,9 +21155,9 @@ dependencies = [ [[package]] name = "tokio-metrics" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eace09241d62c98b7eeb1107d4c5c64ca3bd7da92e8c218c153ab3a78f9be112" +checksum = "cb2bb07a8451c4c6fa8b3497ad198510d8b8dffa5df5cfb97a64102a58b113c8" dependencies = [ "futures-util", "pin-project-lite", @@ -21145,7 +21192,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.18", + "rustls 0.23.19", "rustls-pki-types", "tokio", ] @@ -21216,9 +21263,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -21260,7 +21307,7 @@ dependencies = [ "base64 0.22.1", "bytes", "h2 0.4.6", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "hyper 1.5.1", @@ -21341,7 +21388,7 @@ dependencies = [ "base64 0.21.7", "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -21361,7 +21408,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "futures-core", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "pin-project-lite", @@ -21386,7 +21433,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357a1f99dd439c1aa9ebbaf9c6431b41c05a26bf137e9e92879941bdac5cb66d" dependencies = [ - "http 1.1.0", + "http 1.2.0", "tower-layer", "tower-service", "ulid", @@ -21421,7 +21468,7 @@ dependencies = [ "axum", "forwarded-header-value", "governor", - "http 1.1.0", + "http 1.2.0", "pin-project", "thiserror 1.0.68", "tower 0.5.1", @@ -21430,9 +21477,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -21454,9 +21501,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -21465,9 +21512,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -21536,6 +21583,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-slog" version = "0.2.0" @@ -21549,9 +21606,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -21566,7 +21623,7 @@ dependencies = [ "tracing", "tracing-core", "tracing-log", - "tracing-serde", + "tracing-serde 0.2.0", ] [[package]] @@ -21656,7 +21713,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand 0.8.5", diff --git a/Cargo.toml b/Cargo.toml index 5f9fe61f536..f49e9114450 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ members = [ "rs/bitcoin/ckbtc/minter", "rs/bitcoin/ckbtc/kyt", "rs/bitcoin/consensus", - "rs/bitcoin/kyt", + "rs/bitcoin/checker", "rs/bitcoin/mock", "rs/bitcoin/replica_types", "rs/bitcoin/validation", @@ -510,7 +510,7 @@ bitcoin = { version = "0.28.2", features = ["default", "use-serde", "rand"] } # build-info and build-info-build MUST be kept in sync! build-info = { git = "https://github.com/dfinity-lab/build-info", rev = "701a696844fba5c87df162fbbc1ccef96f27c9d7" } build-info-build = { git = "https://github.com/dfinity-lab/build-info", rev = "701a696844fba5c87df162fbbc1ccef96f27c9d7", default-features = false } -bytes = "1.7.2" +bytes = "1.9.0" candid = { version = "0.10.6" } candid_parser = { version = "0.1.2" } chrono = { version = "0.4.38", default-features = false, features = [ @@ -545,7 +545,7 @@ flate2 = "1.0.31" futures = "0.3.31" futures-util = "0.3.31" hex = { version = "0.4.3", features = ["serde"] } -http = "1.1.0" +http = "1.2.0" http-body = "1.0.1" http-body-util = "0.1.2" humantime-serde = "1.1.1" @@ -565,6 +565,7 @@ ic-agent = { version = "0.37.1", features = [ "reqwest", "pem", ] } +ic-bn-lib = { git = "https://github.com/dfinity/ic-bn-lib", rev = "526d34d15cfbf369d8baf2dae9932aa18d570a1d" } ic-btc-interface = "0.2.2" ic-btc-test-utils = "0.1.0" ic-cbor = "2.6.0" @@ -708,13 +709,13 @@ thiserror = "2.0.3" threadpool = "1.8.1" time = { version = "0.3.36", features = ["formatting"] } tracing-flame = "0.2.0" -tokio = { version = "1.41.1", features = ["full"] } -tokio-metrics = "0.3.1" +tokio = { version = "1.42.0", features = ["full"] } +tokio-metrics = "0.4.0" tokio-rustls = { version = "0.26.0", default-features = false, features = [ "ring", ] } tokio-test = "0.4.4" -tokio-util = { version = "0.7.12", features = ["full"] } +tokio-util = { version = "0.7.13", features = ["full"] } tonic = "0.12.3" tonic-build = "0.12.3" tower = { version = "0.5.1", features = ["full"] } @@ -727,10 +728,10 @@ tower-http = { version = "0.6.2", features = [ "compression-full", "tracing", ] } -tracing = "0.1.40" +tracing = "0.1.41" tracing-appender = "0.2.3" tracing-opentelemetry = "0.28.0" -tracing-subscriber = { version = "0.3.18", features = [ +tracing-subscriber = { version = "0.3.19", features = [ "env-filter", "fmt", "json", diff --git a/MODULE.bazel b/MODULE.bazel index 76613152180..7d1700c4503 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -813,3 +813,11 @@ http_file( sha256 = "31d4654d60b364420a2e52f546f06b2255dc78ac8c2d768271f004b8946e92cb", url = "https://raw.githubusercontent.com/dfinity/portal/407ec5b92d06618c4df9f52e98514c5f4f44313e/docs/references/_attachments/ic.did", ) + +# Mozilla CA certificate store in PEM format +http_file( + name = "mozilla_root_ca_store", + downloaded_file_path = "cacert.pem", + sha256 = "bb1782d281fe60d4a2dcf41bc229abe3e46c280212597d4abcc25bddf667739b", + url = "https://curl.se/ca/cacert-2024-11-26.pem", +) diff --git a/bazel/external_crates.bzl b/bazel/external_crates.bzl index a6b5e5803ab..c644f89d273 100644 --- a/bazel/external_crates.bzl +++ b/bazel/external_crates.bzl @@ -322,7 +322,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^1.3.4", ), "bytes": crate.spec( - version = "^1.7.2", + version = "^1.9.0", ), "cached": crate.spec( version = "^0.49", @@ -520,7 +520,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^0.12", ), "http": crate.spec( - version = "^1.1.0", + version = "^1.2.0", ), "http-body": crate.spec( version = "^1.0.1", @@ -1282,14 +1282,14 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^0.3.36", ), "tokio": crate.spec( - version = "^1.41.1", + version = "^1.42.0", features = ["full"], ), "tokio-io-timeout": crate.spec( version = "^1.2.0", ), "tokio-metrics": crate.spec( - version = "^0.3.1", + version = "^0.4.0", ), "tokio-rustls": crate.spec( version = "^0.26.0", @@ -1312,7 +1312,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^0.4.4", ), "tokio-util": crate.spec( - version = "^0.7.12", + version = "^0.7.13", features = [ "codec", "time", @@ -1354,7 +1354,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^0.4.0", ), "tracing": crate.spec( - version = "^0.1.40", + version = "^0.1.41", ), "tracing-appender": crate.spec( version = "^0.2.3", @@ -1372,7 +1372,7 @@ def external_crates_repository(name, cargo_lockfile, lockfile, sanitizers_enable version = "^0.2", ), "tracing-subscriber": crate.spec( - version = "^0.3.18", + version = "^0.3.19", features = [ "env-filter", "fmt", diff --git a/bin/afl_wrapper.sh b/bin/afl_wrapper.sh index 00618a8a7a6..250d055d684 100755 --- a/bin/afl_wrapper.sh +++ b/bin/afl_wrapper.sh @@ -94,6 +94,14 @@ function afl_env() { /usr/local/bin/afl-fuzz -t +20000 $@ } +# Usage: stderr_file 42 +# OUTPUT_DIR will always be set +stderr_file() { + FILEPATH="$OUTPUT_DIR/stderr$1.txt" + touch "$FILEPATH" + echo $FILEPATH +} + # To run multiple fuzzers in parallel, use the AFL_PARALLEL env variable # export AFL_PARALLEL=4 # Make sure you have enough cores, as each job occupies a core. @@ -101,7 +109,7 @@ function afl_env() { if [[ ! -z "$AFL_PARALLEL" ]]; then trap cleanup EXIT # master fuzzer - afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P exploit -p explore -M fuzzer1 ${@:2} -- $1 /dev/null & + AFL_DRIVER_STDERR_DUPLICATE_FILENAME=$(stderr_file 1) afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P exploit -p explore -M fuzzer1 ${@:2} -- $1 /dev/null & for i in $(seq 2 $AFL_PARALLEL); do probability=$((100 * $i / $AFL_PARALLEL)) @@ -150,7 +158,7 @@ if [[ ! -z "$AFL_PARALLEL" ]]; then strategy="explore" fi - afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P $strategy -p $power_schedule -S fuzzer$i ${@:2} -- $1 /dev/null & + AFL_DRIVER_STDERR_DUPLICATE_FILENAME=$(stderr_file $i) afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P $strategy -p $power_schedule -S fuzzer$i ${@:2} -- $1 /dev/null & done watch -n 5 --color "afl-whatsup -s -d $OUTPUT_DIR" @@ -158,5 +166,5 @@ else # if AFL_PARALLEL is not set # run a single instance # single instance will mimic the master fuzzer - afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P exploit -p explore ${@:2} -- $1 + AFL_DRIVER_STDERR_DUPLICATE_FILENAME=$(stderr_file 1) afl_env -i $INPUT_DIR -o $OUTPUT_DIR -P exploit -p explore ${@:2} -- $1 fi diff --git a/ci/src/mainnet_revisions/mainnet_revisions.py b/ci/src/mainnet_revisions/mainnet_revisions.py new file mode 100644 index 00000000000..1c28cef7498 --- /dev/null +++ b/ci/src/mainnet_revisions/mainnet_revisions.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 +import argparse +import json +import logging +import pathlib +import subprocess +import sys +import urllib.request + +# from pylib.ic_deployment import IcDeployment + +SAVED_VERSIONS_PATH = "testnet/mainnet_revisions.json" +nns_subnet_id = "tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe" +app_subnet_id = "io67a-2jmkw-zup3h-snbwi-g6a5n-rm5dn-b6png-lvdpl-nqnto-yih6l-gqe" +PUBLIC_DASHBOARD_API = "https://ic-api.internetcomputer.org" + + +def get_saved_versions(repo_root: pathlib.Path): + """ + Return a dict with all saved versions. + + Example of the file contents: + { + "subnets": { + "tbd26...": "xxxxxREVISIONxxx" + }, + } + The file can also be extended with other data, e.g., canister versions: + { + "canisters" { + "rwlgt-iiaaa-aaaaa-aaaaa-cai": "xxxxxREVISIONxxx" + } + } + """ + saved_versions_path = repo_root / SAVED_VERSIONS_PATH + if saved_versions_path.exists(): + with open(saved_versions_path, "r", encoding="utf-8") as f: + return json.load(f) + else: + return {} + + +def update_saved_subnet_version(subnet: str, version: str, repo_root: pathlib.Path): + """Update the version that we last saw on a particular IC subnet.""" + saved_versions = get_saved_versions(repo_root=repo_root) + subnet_versions = saved_versions.get("subnets", {}) + subnet_versions[subnet] = version + saved_versions["subnets"] = subnet_versions + with open(repo_root / SAVED_VERSIONS_PATH, "w", encoding="utf-8") as f: + json.dump(saved_versions, f, indent=2) + + +def get_saved_nns_subnet_version(repo_root: pathlib.Path): + """Get the last known version running on the NNS subnet.""" + saved_versions = get_saved_versions(repo_root=repo_root) + return saved_versions.get("subnets", {}).get(nns_subnet_id, "") + + +def get_saved_app_subnet_version(repo_root: pathlib.Path): + """Get the last known version running on an App subnet.""" + saved_versions = get_saved_versions(repo_root=repo_root) + return saved_versions.get("subnets", {}).get(app_subnet_id, "") + + +def get_subnet_replica_version(subnet_id: str) -> str: + req = urllib.request.Request( + url=f"{PUBLIC_DASHBOARD_API}/api/v3/subnets/{subnet_id}", headers={"user-agent": "python"} + ) + + with urllib.request.urlopen(req, timeout=30) as request: + replica_versions = json.loads(request.read().decode())["replica_versions"] + latest_replica_version = sorted(replica_versions, key=lambda x: x["executed_timestamp_seconds"])[-1][ + "replica_version_id" + ] + return latest_replica_version + + +def get_repo_root() -> str: + return subprocess.run(["git", "rev-parse", "--show-toplevel"], text=True, stdout=subprocess.PIPE).stdout.strip() + + +def main(): + """Do the main work.""" + + class HelpfulParser(argparse.ArgumentParser): + """An argparse parser that prints usage on any error.""" + + def error(self, message): + sys.stderr.write("error: %s\n" % message) + self.print_help() + sys.exit(2) + + parser = HelpfulParser() + + parser.add_argument("--verbose", "-v", action="store_true", help="Verbose mode") + + args = parser.parse_args() + + if args.verbose: + logging.basicConfig(level=logging.DEBUG) + else: + logging.basicConfig(level=logging.INFO) + + current_nns_version = get_subnet_replica_version(nns_subnet_id) + logging.info("Current NNS subnet (%s) revision: %s", nns_subnet_id, current_nns_version) + current_app_subnet_version = get_subnet_replica_version(app_subnet_id) + logging.info("Current App subnet (%s) revision: %s", app_subnet_id, current_app_subnet_version) + + repo = "dfinity/ic" + + repo_root = pathlib.Path(get_repo_root()) + + if not repo_root.parent.exists(): + raise Exception("Expected dir %s to exist", repo_root.name) + + branch = "ic-mainnet-revisions" + subprocess.call(["git", "fetch", "origin", "master:master"], cwd=repo_root) + + result = subprocess.run(["git", "status", "--porcelain"], stdout=subprocess.PIPE, text=True, check=True) + if result.stdout.strip(): + logging.error("Found uncommited work! Commit and then proceed.") + exit(2) + + if subprocess.call(["git", "checkout", branch], cwd=repo_root) == 0: + # The branch already exists, update the existing MR + logging.info("Found an already existing target branch") + else: + subprocess.check_call(["git", "checkout", "-b", branch], cwd=repo_root) + subprocess.check_call(["git", "reset", "--hard", "origin/master"], cwd=repo_root) + + update_saved_subnet_version(subnet=nns_subnet_id, version=current_nns_version, repo_root=pathlib.Path(repo_root)) + update_saved_subnet_version( + subnet=app_subnet_id, version=current_app_subnet_version, repo_root=pathlib.Path(repo_root) + ) + git_modified_files = subprocess.check_output(["git", "ls-files", "--modified", "--others"], cwd=repo_root).decode( + "utf8" + ) + if SAVED_VERSIONS_PATH in git_modified_files: + logging.info("Creating/updating a MR that updates the saved NNS subnet revision") + subprocess.check_call(["git", "add", SAVED_VERSIONS_PATH], cwd=repo_root) + subprocess.check_call( + [ + "git", + "-c", + "user.name=CI Automation", + "-c", + "user.email=infra+github-automation@dfinity.org", + "commit", + "-m", + "chore: Update Mainnet IC revisions file", + SAVED_VERSIONS_PATH, + ], + cwd=repo_root, + ) + subprocess.check_call(["git", "push", "origin", branch, "-f"], cwd=repo_root) + + if not subprocess.check_output( + ["gh", "pr", "list", "--head", branch, "--repo", repo], + cwd=repo_root, + ).decode("utf8"): + subprocess.check_call( + [ + "gh", + "pr", + "create", + "--head", + branch, + "--repo", + repo, + "--fill", + ], + cwd=repo_root, + ) + + +if __name__ == "__main__": + main() diff --git a/cpp/BUILD.bazel b/cpp/BUILD.bazel index 5c182ca450f..6f0dad10bd3 100644 --- a/cpp/BUILD.bazel +++ b/cpp/BUILD.bazel @@ -26,29 +26,3 @@ genrule( "@platforms//os:linux", ], ) - -cc_binary( - name = "prestorecon_bin", - srcs = [ - "prestorecon-cpp/prestorecon.cc", - ], - copts = ["-std=c++17"], - linkopts = [ - "-lselinux", - "-pthread", - ], - target_compatible_with = [ - "@platforms//os:linux", - ], -) - -genrule( - name = "prestorecon_cleaned", - srcs = ["prestorecon_bin"], - outs = ["prestorecon"], - cmd = "objcopy -R .comment -R .note -R .note.gnu.build-id $< $@", - executable = True, - target_compatible_with = [ - "@platforms//os:linux", - ], -) diff --git a/cpp/Makefile b/cpp/Makefile index cbea7a7a627..4bf33c24885 100644 --- a/cpp/Makefile +++ b/cpp/Makefile @@ -1,11 +1,7 @@ CXXFLAGS = -Wall -O2 --std=c++17 -all: infogetty prestorecon +all: infogetty infogetty: LDFLAGS += -lsystemd infogetty: infogetty-cpp/infogetty.o infogetty-cpp/network_info.o $(CXX) -o $@ $^ $(LDFLAGS) - -prestorecon: LDFLAGS += -lselinux -pthread -prestorecon: prestorecon-cpp/prestorecon.o - $(CXX) -o $@ $^ $(LDFLAGS) diff --git a/cpp/prestorecon-cpp/prestorecon.cc b/cpp/prestorecon-cpp/prestorecon.cc deleted file mode 100644 index 74bf9deb2e3..00000000000 --- a/cpp/prestorecon-cpp/prestorecon.cc +++ /dev/null @@ -1,518 +0,0 @@ -// This tool is a replacement for the system "restorecon" utility that -// parallelizes the label lookup (it turns out that the regex processing -// is taking majority of the CPU time, but parallelizing filesystem -// traversal certainly helps as well). -// -// Preferred usage: prestorecon -j 0 -// -// This will trigger relabelling using all available CPUs. - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class WorkPool { -public: - // Empty workpool. - inline WorkPool() {} - - bool - empty() const noexcept - { - return dirs_to_visit.empty() && inodes_to_label.empty(); - } - - void - merge(WorkPool other); - - // Take list of pathnames to initially add to the workpool. Will test - // all input paths whether they are directories or not. - WorkPool(const std::vector& initial_paths); - std::vector dirs_to_visit; - std::vector> inodes_to_label; -}; - -WorkPool::WorkPool(const std::vector& initial_paths) -{ - for (const auto& path : initial_paths) { - // We are open-coding the system call to lstat here - // to determine mode (permissions and file type) of path - // in question. - // - // It would in principle be possible to use - // std::filesystem::is_directory instead, but that would - // cause an additional lstat system call internal to this - // function to be issued (and we would really like to get - // high throughput and minimize number of syscalls per - // loop). - // - // The other alternative would be to use - // std::filesystem::status and use its result both for - // checking whether this is a directory and obtaining - // file type + permissions. The small annoyance with that - // is that the selabel_lookup API function called later - // requires exactly the mode_t as supplied by stat for - // its decision, so we would need to "reconstruct" it - // from the std::filesystem::status result. That is - // possible, but probably not any more readable than - // working with the raw system call directly. - struct stat statbuf; - if (::lstat(path.c_str(), &statbuf) == 0) { - inodes_to_label.emplace_back(path, statbuf.st_mode); - if ((statbuf.st_mode & S_IFMT) == S_IFDIR) { - dirs_to_visit.push_back(path); - } - } else { - throw std::runtime_error("Unable to stat " + path + ":" + std::strerror(errno)); - } - } -} - -void -WorkPool::merge(WorkPool other) -{ - dirs_to_visit.insert( - dirs_to_visit.end(), - std::make_move_iterator(other.dirs_to_visit.begin()), - std::make_move_iterator(other.dirs_to_visit.end())); - inodes_to_label.insert( - inodes_to_label.end(), - std::make_move_iterator(other.inodes_to_label.begin()), - std::make_move_iterator(other.inodes_to_label.end())); -} - - -class GlobalWorkPool { -public: - using id_type = std::size_t; - - // Pushes some work to the workpool, making it available to - // other threads. This returns an ID by which the published - // work can later be retrieved again (see next function). - id_type - add_work(WorkPool pool); - - // Given a work pool id, try to revoke a work pool that was - // pushed previously. The two mechanisms allow one thread - // with too much work to make part of it "available" for other - // threads to pick up (if they have capacity), but allows - // to get back to the same work if it was not picked up. - // This allows a bit better thread locality than picking up - // some "random" work from the pool. - WorkPool - revoke_work(id_type id); - - // Tries to steal work from the pool. - // - // This call may block on the pool and will eventually return - // with either: - // - some work that was obtained from the global pool - // - an empty optional, indicating that everything is idle - // and calling thread should quit - // - // This function internally accounts for the number of active - // threads, in order to do that each thread needs to set the - // "was_busy" flag accordingly: - // - on first call, it needs to specify "was_busy=false". This - // indicates that this is a new thread that was not "seen" by - // the pool before - // - on every subsequent call, it needs to specify "was_busy=true". - // This indicates that this is a returning thread that has been - // accounted for already. - // - // The function will return None iff: - // - the pool is empty - // - all threads that are accounted for are blocked inside steal_work - // - // This means that at the end of processing, the last thread - // enters this function (while all other threads are blocked on this - // function already), and then all threads receive an empty optional - // return from this function at the same time. - std::optional - steal_work( - bool was_busy, - std::size_t limit_dirs_to_visit, - std::size_t limit_inodes_to_label); - -private: - std::condition_variable cond_; - std::mutex mutex_; - // All below fields guarded by mutex. - std::map pools_ __attribute__((guarded_by(mutex_))); - id_type next_id_ __attribute__((guarded_by(mutex_))) = 0; - std::size_t busy_count_ __attribute__((guarded_by(mutex_))) = 0; -}; - -GlobalWorkPool::id_type -GlobalWorkPool::add_work(WorkPool pool) -{ - std::unique_lock guard(mutex_); - id_type id = next_id_++; - pools_.emplace(id, std::move(pool)); - cond_.notify_all(); - return id; -} - -WorkPool -GlobalWorkPool::revoke_work(id_type id) -{ - std::unique_lock guard(mutex_); - auto i = pools_.find(id); - if (i != pools_.end()) { - WorkPool tmp(std::move(i->second)); - pools_.erase(i); - return tmp; - } else { - return WorkPool(); - } -} - -std::optional -GlobalWorkPool::steal_work( - bool was_busy, - std::size_t limit_dirs_to_visit, - std::size_t limit_inodes_to_label) -{ - std::unique_lock guard(mutex_); - for (;;) { - if (was_busy) { - --busy_count_; - was_busy = false; - if (!busy_count_) { - cond_.notify_all(); - } - } - // While there is no work, but some other thread is still busy, wait. - while (pools_.empty() && busy_count_) { - cond_.wait(guard); - } - - WorkPool tmp; - - // Try to steal dirs_to_visit first. - for (auto i = pools_.begin(); i != pools_.end();) { - if (tmp.dirs_to_visit.size() >= limit_dirs_to_visit) { - break; - } - auto& victim = i->second.dirs_to_visit; - auto begin = victim.begin(); - std::size_t count = std::min( - victim.size(), - limit_dirs_to_visit - tmp.dirs_to_visit.size()); - tmp.dirs_to_visit.insert(tmp.dirs_to_visit.end(), std::make_move_iterator(begin), std::make_move_iterator(begin + count)); - victim.erase(begin, begin + count); - if (victim.empty() && i->second.inodes_to_label.empty()) { - i = pools_.erase(i); - } else { - ++i; - } - } - if (!tmp.empty()) { - ++busy_count_; - return { std::move(tmp) }; - } - - // If that fails, steal inodes_to_label. - for (auto i = pools_.begin(); i != pools_.end();) { - if (tmp.inodes_to_label.size() >= limit_inodes_to_label) { - break; - } - auto& victim = i->second.inodes_to_label; - auto begin = victim.begin(); - std::size_t count = std::min( - victim.size(), - limit_dirs_to_visit - tmp.inodes_to_label.size()); - tmp.inodes_to_label.insert(tmp.inodes_to_label.end(), std::make_move_iterator(begin), std::make_move_iterator(begin + count)); - victim.erase(begin, begin + count); - if (victim.empty() && i->second.dirs_to_visit.empty()) { - i = pools_.erase(i); - } else { - ++i; - } - } - if (!tmp.empty()) { - ++busy_count_; - return { std::move(tmp) }; - } - - // If no work there, check if some other thread is still busy and might produce - // new work. - if (busy_count_) { - continue; - } - - // All work is done, notify calling thread that it should terminate. - return {}; - } -} - - - -/////////////////////////////////////////////////////////////////////////////// - -const std::size_t LABEL_WORK_THRESHOLD = 1000; -const std::size_t DIR_VISIT_STEAL = 100; -const std::size_t LABEL_WORK_STEAL = 1000; - -void parallel_work( - GlobalWorkPool& global_pool, - std::function list_dir, - std::function>&)> apply_labels) -{ - bool was_busy = false; - WorkPool local_pool; - - for (;;) { - // First, check if we have enough work accumulated that we should start - // labeling. - if (local_pool.inodes_to_label.size() >= LABEL_WORK_THRESHOLD) { - // Push all unvisited directories as well as excess inodes to label - // to the global work pool. Some other thread may pick them up - // while we are busily labeling here. - WorkPool tmp; - tmp.dirs_to_visit.swap(local_pool.dirs_to_visit); - if (local_pool.inodes_to_label.size() > LABEL_WORK_THRESHOLD) { - auto excess = local_pool.inodes_to_label.begin() + LABEL_WORK_THRESHOLD; - auto end = local_pool.inodes_to_label.end(); - tmp.inodes_to_label.insert( - tmp.inodes_to_label.end(), - std::make_move_iterator(excess), - std::make_move_iterator(end)); - local_pool.inodes_to_label.erase(excess, end); - } - auto id = global_pool.add_work(std::move(tmp)); - - apply_labels(local_pool.inodes_to_label); - local_pool.inodes_to_label.clear(); - - // Try to get the work pool we pushed above back and put it into - // our local work pool. - local_pool = global_pool.revoke_work(id); - - continue; - } - - // If there is not enough labeling work, traverse directories - // (depth-first) to generate more work. - if (!local_pool.dirs_to_visit.empty()) { - std::string dir = local_pool.dirs_to_visit.back(); - local_pool.dirs_to_visit.pop_back(); - local_pool.merge(list_dir(dir)); - continue; - } - - // No directories to traverse known anymore, just apply labels to all - // inodes known so far in order to drain the local work pool. - apply_labels(local_pool.inodes_to_label); - local_pool.inodes_to_label.clear(); - - // Local work pool is completely empty at this point. Try to get more - // work from global pool. Note that this will return None iff there is - // no work left and also all other threads are idle. - auto maybe_work = global_pool.steal_work(was_busy, DIR_VISIT_STEAL, LABEL_WORK_STEAL); - if (maybe_work) { - local_pool = std::move(*maybe_work); - was_busy = true; - } else { - break; - } - } -} - -//////////////////// - -WorkPool -list_dir(const std::string& path) -{ - WorkPool tmp; - for (const auto& entry: std::filesystem::directory_iterator(path)) { - const auto& path = entry.path().string(); - struct stat statbuf; - if (lstat(path.c_str(), &statbuf) == 0) { - tmp.inodes_to_label.emplace_back(path, statbuf.st_mode); - if ((statbuf.st_mode & S_IFMT) == S_IFDIR) { - tmp.dirs_to_visit.push_back(path); - } - } else { - throw std::runtime_error("Unable to stat " + path + ":" + std::strerror(errno)); - } - } - return tmp; -} - -#include -#include - -struct relabel_stats { - std::size_t inodes_processed = 0; - std::size_t inodes_relabeled = 0; -}; - -void apply_labels( - const std::vector>& paths, - selabel_handle* hdl, int verbosity, bool dry_run, relabel_stats& stats) -{ - for (const auto& entry : paths) { - const auto& [path, mode] = entry; - - char* should_context; - if (::selabel_lookup(hdl, &should_context, path.c_str(), mode)) { - throw std::runtime_error("selabel_lookup failed for " + path + ":" + std::strerror(errno)); - } - // Note that "should_context" cannot be null at this point (we would - // have thrown an exception instead). - - stats.inodes_processed += 1; - - // Get present context of the file, or null pointer if no - // context assigned to file at present. - // The API is defined that it will return an malloc'ed c-style - // string representing the context, so no std::string here. - char* is_context = 0; - if (::lgetfilecon(path.c_str(), &is_context) < 0) { - is_context = 0; - } - - // Need to update context if no context set or context is wrong. - bool need_set_context = !is_context || (std::strcmp(is_context, should_context) != 0); - - // Apply context change (unless in dry-run mode). - if (need_set_context) { - stats.inodes_relabeled += 1; - } - if (need_set_context && !dry_run) { - if (::lsetfilecon(path.c_str(), should_context)) { - throw std::runtime_error("Unable to set context for " + path + ":" + std::strerror(errno)); - } - } - - // Produce informative output, dependent on verbosity level. - if (verbosity == 1) { - if (need_set_context) { - std::cout - << "Change context for " << path - << " from " << (is_context ? is_context : "NONE") - << " to " << should_context << "\n"; - } - } else if (verbosity >= 2) { - std::cout - << "Context for " << path - << " was " << (is_context ? is_context : "NONE") - << " new " << should_context << "\n"; - } - - ::freecon(should_context); - // Note that freecon happily accepts a null pointer and then does nothing. - ::freecon(is_context); - } -} - -struct parsed_args { - std::vector paths; - std::size_t jobs = 1; - int verbosity = 0; - bool dry_run = false; -}; - -parsed_args -parse_args(int argc, char** argv) -{ - parsed_args result; - static const struct option long_options[] = { - {"jobs", required_argument, nullptr, 'j'}, - {"verbose", no_argument, nullptr, 'v'}, - {"dry-run", no_argument, nullptr, 'n'}, - {nullptr, 0, nullptr, 0} - }; - - for (;;) { - int opt = getopt_long(argc, argv, "nvj:", long_options, nullptr); - if (opt == -1) { - break; - } - switch (opt) { - case 'j': { - result.jobs = atoi(optarg); - break; - } - case 'v': { - result.verbosity += 1; - break; - } - case 'n': { - result.dry_run = true; - break; - } - } - } - for (int n = optind ; n < argc; ++n) { - result.paths.push_back(std::filesystem::absolute(argv[n]).string()); - } - - // Special case: if caller specified "0" as number of CPUs to use, - // use all available ones. - if (result.jobs == 0) { - result.jobs = sysconf(_SC_NPROCESSORS_ONLN); - } - - return result; -} - -int main(int argc, char** argv) -{ - auto start_time = std::chrono::steady_clock::now(); - auto args = parse_args(argc, argv); - - GlobalWorkPool global_pool; - global_pool.add_work(WorkPool(args.paths)); - - std::vector threads; - std::vector stats(args.jobs); - auto selabel_hdl = selabel_open(SELABEL_CTX_FILE, nullptr, 0); - - for (std::size_t n = 0; n < args.jobs; ++n) { - threads.emplace_back( - [&global_pool, &args, &stats, n, selabel_hdl] () { - parallel_work( - global_pool, - list_dir, - [selabel_hdl, &args, &stats, n] (const std::vector>& paths) { - apply_labels(paths, selabel_hdl, args.verbosity, args.dry_run, stats[n]); - }); - } - ); - } - - relabel_stats global_stats; - - for (std::size_t n = 0; n < args.jobs; ++n) { - threads[n].join(); - global_stats.inodes_processed += stats[n].inodes_processed; - global_stats.inodes_relabeled += stats[n].inodes_relabeled; - } - - selabel_close(selabel_hdl); - - auto end_time = std::chrono::steady_clock::now(); - long long elapsed_ms = std::chrono::duration_cast(end_time - start_time).count(); - - std::cout << "Processed: " << global_stats.inodes_processed - << " Relabeled: " << global_stats.inodes_relabeled - << " Elapsed: " << elapsed_ms << "ms\n"; - - return 0; -} diff --git a/hs/spec_compliance/src/IC/Test/Agent.hs b/hs/spec_compliance/src/IC/Test/Agent.hs index 08e2f076e7e..cde54340f2f 100644 --- a/hs/spec_compliance/src/IC/Test/Agent.hs +++ b/hs/spec_compliance/src/IC/Test/Agent.hs @@ -460,7 +460,7 @@ postCBOR' ep path gr = do } waitFor $ do res <- httpLbs request agentManager - if responseStatus res == tooManyRequests429 + if responseStatus res == tooManyRequests429 || responseStatus res == badGateway502 then return Nothing else return $ Just res diff --git a/ic-os/boundary-guestos/context/docker-base.prod b/ic-os/boundary-guestos/context/docker-base.prod index b9518202a1c..260946222ef 100644 --- a/ic-os/boundary-guestos/context/docker-base.prod +++ b/ic-os/boundary-guestos/context/docker-base.prod @@ -1 +1 @@ -ghcr.io/dfinity/boundaryos-base@sha256:d97d5a2e72fb0c80643a707708299ae392f54ef5b41e9d0292129d9e47d52a93 +ghcr.io/dfinity/boundaryos-base@sha256:371a53cbdd1e1b61b5712527ebc4138d2e37042b265896307172a5524e9a84c7 diff --git a/ic-os/components/boundary-guestos/opt/ic/bin/setup-ic-boundary.sh b/ic-os/components/boundary-guestos/opt/ic/bin/setup-ic-boundary.sh index 5477e1e5b75..063a0623677 100644 --- a/ic-os/components/boundary-guestos/opt/ic/bin/setup-ic-boundary.sh +++ b/ic-os/components/boundary-guestos/opt/ic/bin/setup-ic-boundary.sh @@ -59,6 +59,7 @@ HTTP_CLIENT_TIMEOUT_CONNECT="3s" NFTABLES_SYSTEM_REPLICAS_PATH="/run/ic-node/etc/nftables/system_replicas.ruleset" RETRY_UPDATE_CALL="true" RATE_LIMIT_PER_SECOND_PER_SUBNET="1000" +RATE_LIMIT_GENERIC_FILE="/run/ic-node/etc/ic-boundary/canister-ratelimit.yml" REGISTRY_NNS_URLS="${NNS_URL}" REGISTRY_NNS_PUB_KEY_PEM="/run/ic-node/etc/default/nns_public_key.pem" REGISTRY_LOCAL_STORE_PATH="/var/opt/registry/store" diff --git a/ic-os/components/guestos.bzl b/ic-os/components/guestos.bzl index 7cba763ee3b..a97124f7c3b 100644 --- a/ic-os/components/guestos.bzl +++ b/ic-os/components/guestos.bzl @@ -27,6 +27,7 @@ component_files = { Label("ic/ic-btc-adapter/ic-btc-testnet-adapter.socket"): "/etc/systemd/system/ic-btc-testnet-adapter.socket", Label("ic/setup-permissions/setup-permissions.sh"): "/opt/ic/bin/setup-permissions.sh", Label("ic/setup-permissions/setup-permissions.service"): "/etc/systemd/system/setup-permissions.service", + Label("ic/setup-permissions/erestorecon.sh"): "/opt/ic/bin/erestorecon.sh", Label("ic/share/ark.pem"): "/opt/ic/share/ark.pem", Label("ic/ic-crypto-csp/ic-crypto-csp.service"): "/etc/systemd/system/ic-crypto-csp.service", Label("ic/ic-crypto-csp/ic-crypto-csp.socket"): "/etc/systemd/system/ic-crypto-csp.socket", diff --git a/ic-os/components/hostos-scripts/generate-guestos-config/dev-generate-guestos-config.sh b/ic-os/components/hostos-scripts/generate-guestos-config/dev-generate-guestos-config.sh index 024fc730284..d1de73b5a0c 100755 --- a/ic-os/components/hostos-scripts/generate-guestos-config/dev-generate-guestos-config.sh +++ b/ic-os/components/hostos-scripts/generate-guestos-config/dev-generate-guestos-config.sh @@ -83,7 +83,6 @@ function read_variables() { function assemble_config_media() { cmd=(/opt/ic/bin/build-bootstrap-config-image.sh ${MEDIA}) cmd+=(--nns_public_key "/boot/config/nns_public_key.pem") - cmd+=(--elasticsearch_hosts "$(/opt/ic/bin/fetch-property.sh --key=.logging.hosts --metric=hostos_logging_hosts --config=${DEPLOYMENT})") cmd+=(--ipv6_address "$(/opt/ic/bin/hostos_tool generate-ipv6-address --node-type GuestOS)") cmd+=(--ipv6_gateway "${ipv6_gateway}") if [[ -n "$ipv4_address" && -n "$ipv4_prefix_length" && -n "$ipv4_gateway" && -n "$domain" ]]; then diff --git a/ic-os/components/hostos-scripts/generate-guestos-config/generate-guestos-config.sh b/ic-os/components/hostos-scripts/generate-guestos-config/generate-guestos-config.sh index 3d125938234..86f038a0b78 100755 --- a/ic-os/components/hostos-scripts/generate-guestos-config/generate-guestos-config.sh +++ b/ic-os/components/hostos-scripts/generate-guestos-config/generate-guestos-config.sh @@ -83,7 +83,6 @@ function read_variables() { function assemble_config_media() { cmd=(/opt/ic/bin/build-bootstrap-config-image.sh ${MEDIA}) cmd+=(--nns_public_key "/boot/config/nns_public_key.pem") - cmd+=(--elasticsearch_hosts "$(/opt/ic/bin/fetch-property.sh --key=.logging.hosts --metric=hostos_logging_hosts --config=${DEPLOYMENT})") cmd+=(--ipv6_address "$(/opt/ic/bin/hostos_tool generate-ipv6-address --node-type GuestOS)") cmd+=(--ipv6_gateway "${ipv6_gateway}") if [[ -n "$ipv4_address" && -n "$ipv4_prefix_length" && -n "$ipv4_gateway" && -n "$domain" ]]; then diff --git a/ic-os/components/ic/setup-permissions/erestorecon.sh b/ic-os/components/ic/setup-permissions/erestorecon.sh new file mode 100755 index 00000000000..3cc9a4192e5 --- /dev/null +++ b/ic-os/components/ic/setup-permissions/erestorecon.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +# erestorecon (easy prestorecon) uses UNIX tools to parallelize restorecon, +# instead of the cpp based prestorecon. + +find $@ -print0 | xargs -0 -P 0 restorecon diff --git a/ic-os/components/ic/setup-permissions/setup-permissions.sh b/ic-os/components/ic/setup-permissions/setup-permissions.sh index c19d6ee690e..8576d1e1e60 100755 --- a/ic-os/components/ic/setup-permissions/setup-permissions.sh +++ b/ic-os/components/ic/setup-permissions/setup-permissions.sh @@ -41,7 +41,7 @@ make_group_owned_and_sticky /var/lib/ic/data/recovery admin nonconfidential # Fix up security labels for everything. echo "Restoring SELinux security contexts in /var/lib/ic" -/opt/ic/bin/prestorecon -j 0 /var/lib/ic/data /var/lib/ic/crypto +/opt/ic/bin/erestorecon.sh /var/lib/ic/data /var/lib/ic/crypto # Note: we are not setting up contexts individually for /var/lib/ic/backup. # This is handled instead by mount option for the filesystem in its entirety. diff --git a/ic-os/docs/Network-Configuration.adoc b/ic-os/docs/Network-Configuration.adoc index 91e4ba0f2df..32ff2d95760 100644 --- a/ic-os/docs/Network-Configuration.adoc +++ b/ic-os/docs/Network-Configuration.adoc @@ -13,9 +13,9 @@ Network configuration details for each IC-OS: == Deterministic MAC Address -Each IC-OS node must have a unique but deterministic MAC address derived from its BMC MAC address, deployment type (mainnet vs testnet), and variant type (SetupOS, HostOS, GuestOS, BoundaryGuestOS). This MAC address is then utilized to generate the node's network configuration. +Each IC-OS node must have a unique but deterministic MAC address derived from its BMC MAC address, deployment environment (mainnet vs testnet), and variant type (SetupOS, HostOS, GuestOS, BoundaryGuestOS). This MAC address is then utilized to generate the node's network configuration. -For details, see the link:../../rs/ic_os/network/mac_address/README.md[mac_address README]. +For details, see the link:../../rs/ic_os/deterministic_ips/README.md[mac_address README]. == Hostname diff --git a/ic-os/guestos/context/docker-base.dev b/ic-os/guestos/context/docker-base.dev index d656fa23660..0db0fae392c 100644 --- a/ic-os/guestos/context/docker-base.dev +++ b/ic-os/guestos/context/docker-base.dev @@ -1 +1 @@ -ghcr.io/dfinity/guestos-base-dev@sha256:981c653650c242f5490fd6c9ea46525438e472dc44c750963eac02fca321c19e +ghcr.io/dfinity/guestos-base-dev@sha256:6398ffb7c2a0b3777e898a382f8ec60a3372a11789b736fab65168b0a06cc4d2 diff --git a/ic-os/guestos/context/docker-base.prod b/ic-os/guestos/context/docker-base.prod index 4dac2a92683..617a4e7e443 100644 --- a/ic-os/guestos/context/docker-base.prod +++ b/ic-os/guestos/context/docker-base.prod @@ -1 +1 @@ -ghcr.io/dfinity/guestos-base@sha256:f932d313bb455a59b79f78b56bbb96cd97a12e3903dd96ee8a05b377633680c7 +ghcr.io/dfinity/guestos-base@sha256:5bdfed7e45a5b56596ab246aaa6f30fc3885a0a8928059e512f99210d2d50dc2 diff --git a/ic-os/guestos/defs.bzl b/ic-os/guestos/defs.bzl index ce142eed84d..1d4f3c570c2 100644 --- a/ic-os/guestos/defs.bzl +++ b/ic-os/guestos/defs.bzl @@ -48,7 +48,6 @@ def image_deps(mode, malicious = False): "//rs/ic_os/release:nft-exporter": "/opt/ic/bin/nft-exporter:0755", # Firewall (NFTables) counter exporter for observability. "//rs/ic_os/release:vsock_guest": "/opt/ic/bin/vsock_guest:0755", # HostOS <--> GuestOS communication client. "//cpp:infogetty": "/opt/ic/bin/infogetty:0755", # Terminal manager that replaces the login shell. - "//cpp:prestorecon": "/opt/ic/bin/prestorecon:0755", # Parallel restorecon replacement for filesystem relabeling. "//rs/ic_os/release:metrics-proxy": "/opt/ic/bin/metrics-proxy:0755", # Proxies, filters, and serves public node metrics. "//rs/ic_os/release:metrics_tool": "/opt/ic/bin/metrics_tool:0755", # Collects and reports custom metrics. diff --git a/ic-os/hostos/context/docker-base.dev b/ic-os/hostos/context/docker-base.dev index 3e47b0c8f9d..07fe214a31e 100644 --- a/ic-os/hostos/context/docker-base.dev +++ b/ic-os/hostos/context/docker-base.dev @@ -1 +1 @@ -ghcr.io/dfinity/hostos-base-dev@sha256:5cf9998a41ca100fe8b5c5e0678aa1230e1b8cb8e316097c8f1ecad1ceafe665 +ghcr.io/dfinity/hostos-base-dev@sha256:b5124a7eb1cf76619351a3d866ceb0eb36ca73e451b5f3a4617b7bf689c00e65 diff --git a/ic-os/hostos/context/docker-base.prod b/ic-os/hostos/context/docker-base.prod index b4ca677d97f..797802abdf6 100644 --- a/ic-os/hostos/context/docker-base.prod +++ b/ic-os/hostos/context/docker-base.prod @@ -1 +1 @@ -ghcr.io/dfinity/hostos-base@sha256:5e8b448ab1c2e691e3d9c9bb30ebbaf7e94c095ec9932e0bcacddbaccfd4fe35 +ghcr.io/dfinity/hostos-base@sha256:4a8d75b23a778aa3936fda582c5bfa995bcef71a333f2950167c3214a7d0ae8e diff --git a/ic-os/setupos/context/docker-base.dev b/ic-os/setupos/context/docker-base.dev index 18c05f5be1a..251576cfe50 100644 --- a/ic-os/setupos/context/docker-base.dev +++ b/ic-os/setupos/context/docker-base.dev @@ -1 +1 @@ -ghcr.io/dfinity/setupos-base-dev@sha256:fa624ad95f31d22a3e81f66d01eeb47ec43d5583a813103b6cc0d00e2d4838f8 +ghcr.io/dfinity/setupos-base-dev@sha256:38d63421627d9e4553f912c74a7ef88c9a478622f2a6a9f5d3ae6d5fe9b43d0d diff --git a/ic-os/setupos/context/docker-base.prod b/ic-os/setupos/context/docker-base.prod index 45bea5e2cea..185d9656df5 100644 --- a/ic-os/setupos/context/docker-base.prod +++ b/ic-os/setupos/context/docker-base.prod @@ -1 +1 @@ -ghcr.io/dfinity/setupos-base@sha256:191b77c1f3cd293eb0eb255382866e15c1ef7f19419e884166b7e55a2bb50a2d +ghcr.io/dfinity/setupos-base@sha256:3988b30d8a7e260189367402235c00cd4c1ad08d5874674e4c78af249c1f42ae diff --git a/ic-os/setupos/data/deployment.json.template b/ic-os/setupos/data/deployment.json.template index 3ff2bcfdab6..d3bb1638e44 100644 --- a/ic-os/setupos/data/deployment.json.template +++ b/ic-os/setupos/data/deployment.json.template @@ -4,7 +4,7 @@ "mgmt_mac": null }, "logging": { - "hosts": "elasticsearch-node-0.mercury.dfinity.systems:443 elasticsearch-node-1.mercury.dfinity.systems:443 elasticsearch-node-2.mercury.dfinity.systems:443 elasticsearch-node-3.mercury.dfinity.systems:443" + "hosts": "" }, "nns": { "url": "NNS_URL" diff --git a/mainnet-canisters.json b/mainnet-canisters.json index e58cb31c096..ef14f1cc45d 100644 --- a/mainnet-canisters.json +++ b/mainnet-canisters.json @@ -52,8 +52,8 @@ "sha256": "fd25a4e2e283b498c3be1aaf63cc9b2726264d78a12b12f43ad453ceeb575e7c" }, "governance": { - "rev": "f5a63fd41933eee24ab3a6c71e43c67c1048e0db", - "sha256": "c7cd011d711edadc024d2673c090cea17688eca1748648d04c0c0afbdaebdbdc" + "rev": "0f35ac817bdf3b44680111fc90ce5d6e3bc79be1", + "sha256": "5ef169ca0f8765e9d2195988bc4ec26b1b8f0480b22fbd16c5ba148547b90c3d" }, "index": { "rev": "dac2f36f96d7549d82fa8e3c714979255ce57afd", @@ -76,16 +76,16 @@ "sha256": "657010591182ce758c86f020d1eade5f7a188072cf0de9c41e2f9d577849c964" }, "sns-wasm": { - "rev": "f5a63fd41933eee24ab3a6c71e43c67c1048e0db", - "sha256": "54a1274e04355fab3a10ec6b351735abf16ebf939b477e8863b6673a44fcf538" + "rev": "25c1bb0227d9970f5673b908817d7c4962b29911", + "sha256": "68f9fb37341d14a35735e10a0eb2471721b4cd75b6552ac11124aac559b05736" }, "sns_archive": { "rev": "e54d3fa34ded227c885d04e64505fa4b5d564743", "sha256": "317771544f0e828a60ad6efc97694c425c169c4d75d911ba592546912dba3116" }, "sns_governance": { - "rev": "f5a63fd41933eee24ab3a6c71e43c67c1048e0db", - "sha256": "831f6cfdc355d1324ed93bb1a8d4b1f6a3eda5070e59e470cdfd0f2d35de8a88" + "rev": "25c1bb0227d9970f5673b908817d7c4962b29911", + "sha256": "51fd3d1a529f3f7bad808b19074e761ce3538282ac8189bd7067b4156360c279" }, "sns_index": { "rev": "e54d3fa34ded227c885d04e64505fa4b5d564743", diff --git a/packages/pocket-ic/BUILD.bazel b/packages/pocket-ic/BUILD.bazel index 9d9ac15b4b6..2368533d235 100644 --- a/packages/pocket-ic/BUILD.bazel +++ b/packages/pocket-ic/BUILD.bazel @@ -70,20 +70,23 @@ rust_test( rust_test_suite( name = "test", - size = "small", + size = "medium", srcs = ["tests/tests.rs"], data = [ "//packages/pocket-ic/test_canister:test_canister.wasm", "//rs/pocket_ic_server:pocket-ic-server", + "@mozilla_root_ca_store//file", ], env = { + "RUST_TEST_THREADS": "2", "POCKET_IC_BIN": "$(rootpath //rs/pocket_ic_server:pocket-ic-server)", + "SSL_CERT_FILE": "$(rootpath @mozilla_root_ca_store//file)", "TEST_WASM": "$(rootpath //packages/pocket-ic/test_canister:test_canister.wasm)", }, flaky = False, proc_macro_deps = MACRO_DEPENDENCIES, tags = [ - "cpu:8", + "cpu:16", "test_macos", ], deps = [":pocket-ic"] + DEPENDENCIES + TEST_DEPENDENCIES, @@ -95,9 +98,11 @@ rust_test_suite( srcs = ["tests/restart.rs"], data = [ "//rs/pocket_ic_server:pocket-ic-server", + "@mozilla_root_ca_store//file", ], env = { "POCKET_IC_BIN": "$(rootpath //rs/pocket_ic_server:pocket-ic-server)", + "SSL_CERT_FILE": "$(rootpath @mozilla_root_ca_store//file)", }, flaky = False, proc_macro_deps = MACRO_DEPENDENCIES, @@ -114,9 +119,11 @@ rust_test_suite( data = [ "//packages/pocket-ic/test_canister:test_canister.wasm", "//rs/pocket_ic_server:pocket-ic-server", + "@mozilla_root_ca_store//file", ], env = { "POCKET_IC_BIN": "$(rootpath //rs/pocket_ic_server:pocket-ic-server)", + "SSL_CERT_FILE": "$(rootpath @mozilla_root_ca_store//file)", "TEST_WASM": "$(rootpath //packages/pocket-ic/test_canister:test_canister.wasm)", }, flaky = False, diff --git a/publish/canisters/BUILD.bazel b/publish/canisters/BUILD.bazel index 03d373171cc..54f9261d2c3 100644 --- a/publish/canisters/BUILD.bazel +++ b/publish/canisters/BUILD.bazel @@ -13,7 +13,7 @@ CANISTERS = { "genesis-token-canister.wasm.gz": "//rs/nns/gtc:genesis-token-canister", "governance-canister.wasm.gz": "//rs/nns/governance:governance-canister", "governance-canister_test.wasm.gz": "//rs/nns/governance:governance-canister-test", - "ic-btc-kyt.wasm.gz": "//rs/bitcoin/kyt:btc_kyt_canister", + "ic-btc-checker.wasm.gz": "//rs/bitcoin/checker:btc_checker_canister", "ic-ckbtc-minter.wasm.gz": "//rs/bitcoin/ckbtc/minter:ckbtc_minter", "ic-ckbtc-minter_debug.wasm.gz": "//rs/bitcoin/ckbtc/minter:ckbtc_minter_debug", "ic-ckbtc-kyt.wasm.gz": "//rs/bitcoin/ckbtc/kyt:kyt_canister", @@ -70,7 +70,7 @@ CANISTERS_MAX_SIZE_COMPRESSED_E5_BYTES = { # -- XC team -- # Size when constraint addded: 447_593 bytes - "ic-btc-kyt.wasm.gz": "6", + "ic-btc-checker.wasm.gz": "6", # Size when constraint addded: 696_633 bytes "ic-ckbtc-minter.wasm.gz": "8", # Size when constraint addded: 1_230_630 bytes diff --git a/rs/async_utils/src/lib.rs b/rs/async_utils/src/lib.rs index 30ab8bda963..78ec0c2531b 100644 --- a/rs/async_utils/src/lib.rs +++ b/rs/async_utils/src/lib.rs @@ -7,10 +7,7 @@ mod unix; pub use self::{ hyper::ExecuteOnTokioRuntime, join_map::JoinMap, - unix::{ - incoming_from_first_systemd_socket, incoming_from_nth_systemd_socket, incoming_from_path, - incoming_from_second_systemd_socket, - }, + unix::{incoming_from_nth_systemd_socket, incoming_from_path}, }; /// Aborts the whole program with a core dump if a single thread panics. diff --git a/rs/async_utils/src/unix.rs b/rs/async_utils/src/unix.rs index 6daa95b993b..cb19c99f53e 100644 --- a/rs/async_utils/src/unix.rs +++ b/rs/async_utils/src/unix.rs @@ -3,8 +3,7 @@ /// /// Existing socket systemd configurations can be found /// in *.socket files. -use async_stream::__private::AsyncStream; -use futures::TryFutureExt; +use futures::{Stream, TryFutureExt}; use std::{ os::unix::io::FromRawFd, pin::Pin, @@ -20,7 +19,7 @@ const FIRST_SOCKET_FD: i32 = 3; /// for serving inter-process communication requests. pub fn incoming_from_path>( path: P, -) -> AsyncStream, impl futures::Future> { +) -> impl Stream> { let uds = tokio::net::UnixListener::bind(path).expect("Failed to bind path."); async_stream::stream! { loop { @@ -46,39 +45,18 @@ unsafe fn listener_from_systemd_socket(socket_fds: i32) -> tokio::net::UnixListe .expect("Failed to convert UnixListener into Tokio equivalent") } -/// incoming_from_first_systemd_socket() takes the first FD(3) passed by systemd. It does not check if -/// more FDs are passed to the process. -/// -/// # Safety -/// To ensure safety caller needs to ensure that the FD(3) exists and only consumed once. -pub unsafe fn incoming_from_first_systemd_socket( -) -> AsyncStream, impl futures::Future> { - incoming_from_nth_systemd_socket(1) -} - -/// incoming_from_second_systemd_socket() takes the second FD(4) passed by systemd. It does not check if -/// more FDs are passed to the process. -/// -/// # Safety -/// To ensure safety caller needs to ensure that the FD(4) exists and only consumed once. -pub unsafe fn incoming_from_second_systemd_socket( -) -> AsyncStream, impl futures::Future> { - incoming_from_nth_systemd_socket(2) -} - /// # Safety /// To ensure safety caller needs to ensure that the FD for Socket(n) exists and only consumed once. /// See /// First socket would correspond to socket_num = 1, second = 2, so on. pub unsafe fn incoming_from_nth_systemd_socket( socket_num: i32, -) -> AsyncStream, impl futures::Future> { +) -> impl Stream> { let socket_fd = FIRST_SOCKET_FD + socket_num - 1; let uds = listener_from_systemd_socket(socket_fd); async_stream::stream! { loop { let item = uds.accept().map_ok(|(st, _)| UnixStream(st)).await; - yield item; } } diff --git a/rs/bitcoin/adapter/src/rpc_server.rs b/rs/bitcoin/adapter/src/rpc_server.rs index fd9239e4197..5833504038f 100644 --- a/rs/bitcoin/adapter/src/rpc_server.rs +++ b/rs/bitcoin/adapter/src/rpc_server.rs @@ -5,7 +5,7 @@ use crate::{ GetSuccessorsHandler, TransactionManagerRequest, }; use bitcoin::{consensus::Encodable, hashes::Hash, BlockHash}; -use ic_async_utils::{incoming_from_first_systemd_socket, incoming_from_path}; +use ic_async_utils::{incoming_from_nth_systemd_socket, incoming_from_path}; use ic_btc_service::{ btc_service_server::{BtcService, BtcServiceServer}, BtcServiceGetSuccessorsRequest, BtcServiceGetSuccessorsResponse, @@ -150,7 +150,7 @@ pub fn start_grpc_server( }); } IncomingSource::Systemd => { - let incoming = unsafe { incoming_from_first_systemd_socket() }; + let incoming = unsafe { incoming_from_nth_systemd_socket(1) }; let server_fut = Server::builder() .add_service(BtcServiceServer::new(btc_adapter_impl)) // SAFETY: The process is managed by systemd and is configured to start with at least one socket. diff --git a/rs/bitcoin/kyt/BUILD.bazel b/rs/bitcoin/checker/BUILD.bazel similarity index 81% rename from rs/bitcoin/kyt/BUILD.bazel rename to rs/bitcoin/checker/BUILD.bazel index 456322064a7..ddcf7525191 100644 --- a/rs/bitcoin/kyt/BUILD.bazel +++ b/rs/bitcoin/checker/BUILD.bazel @@ -11,9 +11,9 @@ LIB_SRCS = [ ] rust_library( - name = "btc_kyt_lib", + name = "btc_checker_lib", srcs = LIB_SRCS, - crate_name = "ic_btc_kyt", + crate_name = "ic_btc_checker", deps = [ # Keep sorted. "@crate_index//:bitcoin_0_32", @@ -24,27 +24,28 @@ rust_library( rust_test( name = "unit_tests", - crate = ":btc_kyt_lib", + crate = ":btc_checker_lib", ) rust_test( name = "canister_tests", - crate = ":_wasm_btc_kyt_canister", - data = ["btc_kyt_canister.did"], + crate = ":_wasm_btc_checker_canister", + data = ["btc_checker_canister.did"], env = { - "CARGO_MANIFEST_DIR": "rs/bitcoin/kyt", + "CARGO_MANIFEST_DIR": "rs/bitcoin/checker", }, deps = [ # Keep sorted. "@crate_index//:candid_parser", "@crate_index//:ic-btc-interface", + "@crate_index//:proptest", "@crate_index//:scraper", "@crate_index//:tokio", ], ) rust_canister( - name = "btc_kyt_canister", + name = "btc_checker_canister", srcs = glob( ["src/**"], exclude = LIB_SRCS, @@ -53,10 +54,10 @@ rust_canister( "templates/dashboard.html", ], proc_macro_deps = ["@crate_index//:ic-cdk-macros"], - service_file = "btc_kyt_canister.did", + service_file = "btc_checker_canister.did", deps = [ # Keep sorted. - ":btc_kyt_lib", + ":btc_checker_lib", "//rs/rust_canisters/http_types", "@crate_index//:askama", "@crate_index//:base64", @@ -83,18 +84,18 @@ rust_ic_test( name = "integration_tests", srcs = ["tests/tests.rs"], data = [ - ":btc_kyt_canister", + ":btc_checker_canister", "//rs/universal_canister/impl:universal_canister.wasm.gz", ], env = { - "CARGO_MANIFEST_DIR": "rs/bitcoin/kyt", - "IC_BTC_KYT_CANISTER_WASM_PATH": "$(rootpath :btc_kyt_canister)", + "CARGO_MANIFEST_DIR": "rs/bitcoin/checker", + "IC_BTC_CHECKER_CANISTER_WASM_PATH": "$(rootpath :btc_checker_canister)", "POCKET_IC_BIN": "$(rootpath //:pocket-ic-server)", "UNIVERSAL_CANISTER_WASM_PATH": "$(rootpath //rs/universal_canister/impl:universal_canister.wasm.gz)", }, deps = [ # Keep sorted. - ":btc_kyt_lib", + ":btc_checker_lib", "//:pocket-ic-server", "//packages/pocket-ic", "//rs/rust_canisters/http_types", diff --git a/rs/bitcoin/kyt/Cargo.toml b/rs/bitcoin/checker/Cargo.toml similarity index 89% rename from rs/bitcoin/kyt/Cargo.toml rename to rs/bitcoin/checker/Cargo.toml index ea83efe59d8..972c1058d08 100644 --- a/rs/bitcoin/kyt/Cargo.toml +++ b/rs/bitcoin/checker/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ic-btc-kyt" +name = "ic-btc-checker" version.workspace = true authors.workspace = true edition.workspace = true @@ -7,7 +7,7 @@ description.workspace = true documentation.workspace = true [[bin]] -name = "ic-btc-kyt-canister" +name = "ic-btc-checker-canister" path = "src/main.rs" [dependencies] @@ -36,6 +36,7 @@ ic-base-types = { path = "../../types/base_types" } ic-types = { path = "../../types/types" } ic-test-utilities-load-wasm = { path = "../../test_utilities/load_wasm" } ic-universal-canister = { path = "../../universal_canister/lib" } -pocket-ic = { path = "../../../packages/pocket-ic" } +pocket-ic = { path = "../../../packages/pocket-ic" } +proptest = { workspace = true } tokio = { workspace = true } scraper = "0.17.1" diff --git a/rs/bitcoin/kyt/btc_kyt_canister.did b/rs/bitcoin/checker/btc_checker_canister.did similarity index 88% rename from rs/bitcoin/kyt/btc_kyt_canister.did rename to rs/bitcoin/checker/btc_checker_canister.did index d6baa11c26a..6caafdccc69 100644 --- a/rs/bitcoin/kyt/btc_kyt_canister.did +++ b/rs/bitcoin/checker/btc_checker_canister.did @@ -11,9 +11,9 @@ type CheckTransactionArgs = record { txid : blob }; // The result of a check_transaction call. type CheckTransactionResponse = variant { - // When check finishes and all input addresses passed KYT. + // When check finishes and all input addresses passed. Passed; - // When check finishes and one or more input addresses failed KYT. + // When check finishes and one or more input addresses failed. // The list of failed addresses are returned as a best effort, which may be non-exhaustive. Failed: vec BitcoinAddress; // Unknown case where it is unable to give a final answer of Passed or Failed. @@ -50,14 +50,15 @@ type CheckTransactionIrrecoverableError = variant { type InitArg = record { btc_network : BtcNetwork; - kyt_mode: KytMode; + check_mode: CheckMode; }; type UpgradeArg = record { - kyt_mode: opt KytMode; + check_mode: opt CheckMode; + num_subnet_nodes: opt nat16; }; -type KytArg = variant { +type CheckArg = variant { InitArg : InitArg; UpgradeArg: opt UpgradeArg; }; @@ -68,13 +69,13 @@ type BtcNetwork = variant { regtest: record { json_rpc_url: text }; }; -type KytMode = variant { +type CheckMode = variant { AcceptAll; RejectAll; Normal; }; -service : (KytArg) -> { +service : (CheckArg) -> { // Check input addresses of a transaction matching the given transaction id. // See `CheckTransactionResponse` for more details on the return result. // @@ -84,7 +85,7 @@ service : (KytArg) -> { // of the return result. check_transaction: (CheckTransactionArgs) -> (CheckTransactionResponse); - // Return `Passed` if the given bitcoin address passes the KYT check, or `Failed` otherwise. + // Return `Passed` if the given Bitcoin address passes the Bitcoin checker, or `Failed` otherwise. // May throw error (trap) if the given address is malformed or not a mainnet address. check_address: (CheckAddressArgs) -> (CheckAddressResponse) query; } diff --git a/rs/bitcoin/kyt/src/blocklist.rs b/rs/bitcoin/checker/src/blocklist.rs similarity index 100% rename from rs/bitcoin/kyt/src/blocklist.rs rename to rs/bitcoin/checker/src/blocklist.rs diff --git a/rs/bitcoin/kyt/src/dashboard.rs b/rs/bitcoin/checker/src/dashboard.rs similarity index 100% rename from rs/bitcoin/kyt/src/dashboard.rs rename to rs/bitcoin/checker/src/dashboard.rs diff --git a/rs/bitcoin/kyt/src/dashboard/tests.rs b/rs/bitcoin/checker/src/dashboard/tests.rs similarity index 92% rename from rs/bitcoin/kyt/src/dashboard/tests.rs rename to rs/bitcoin/checker/src/dashboard/tests.rs index 84155b39579..45c053cdfb5 100644 --- a/rs/bitcoin/kyt/src/dashboard/tests.rs +++ b/rs/bitcoin/checker/src/dashboard/tests.rs @@ -1,11 +1,11 @@ use crate::dashboard::tests::assertions::DashboardAssert; use crate::dashboard::{filters, DashboardTemplate, Fetched, Status, DEFAULT_TX_TABLE_PAGE_SIZE}; -use crate::state::{Config, Timestamp, TransactionKytData}; +use crate::state::{Config, Timestamp, TransactionCheckData}; use crate::{dashboard, state}; use bitcoin::Address; use bitcoin::{absolute::LockTime, transaction::Version, Transaction}; +use ic_btc_checker::{blocklist::BTC_ADDRESS_BLOCKLIST, BtcNetwork, CheckMode}; use ic_btc_interface::Txid; -use ic_btc_kyt::{blocklist::BTC_ADDRESS_BLOCKLIST, BtcNetwork, KytMode}; use std::str::FromStr; fn mock_txid(v: usize) -> Txid { @@ -15,9 +15,13 @@ fn mock_txid(v: usize) -> Txid { Txid::from(bytes) } +const TEST_SUBNET_NODES: u16 = 13; + #[test] fn should_display_metadata() { - let config = Config::new_and_validate(BtcNetwork::Mainnet, KytMode::Normal).unwrap(); + let config = + Config::new_and_validate(BtcNetwork::Mainnet, CheckMode::Normal, TEST_SUBNET_NODES) + .unwrap(); let outcall_capacity = 50; let cached_entries = 0; let oldest_entry_time = 0; @@ -35,7 +39,7 @@ fn should_display_metadata() { DashboardAssert::assert_that(dashboard) .has_btc_network_in_title(config.btc_network()) - .has_kyt_mode(config.kyt_mode()) + .has_check_mode(config.check_mode) .has_outcall_capacity(outcall_capacity) .has_cached_entries(cached_entries) .has_oldest_entry_time(oldest_entry_time) @@ -75,7 +79,8 @@ fn should_display_statuses() { }); let dashboard = DashboardTemplate { - config: Config::new_and_validate(BtcNetwork::Mainnet, KytMode::Normal).unwrap(), + config: Config::new_and_validate(BtcNetwork::Mainnet, CheckMode::Normal, TEST_SUBNET_NODES) + .unwrap(), outcall_capacity: 50, cached_entries: 6, tx_table_page_size: 10, @@ -116,9 +121,10 @@ fn test_pagination() { use scraper::{Html, Selector}; state::set_config( - state::Config::new_and_validate(BtcNetwork::Mainnet, KytMode::Normal).unwrap(), + state::Config::new_and_validate(BtcNetwork::Mainnet, CheckMode::Normal, TEST_SUBNET_NODES) + .unwrap(), ); - let mock_transaction = TransactionKytData::from_transaction( + let mock_transaction = TransactionCheckData::from_transaction( &BtcNetwork::Mainnet, Transaction { version: Version::ONE, @@ -190,16 +196,16 @@ mod assertions { pub fn has_btc_network_in_title(&self, btc_network: BtcNetwork) -> &Self { self.has_string_value( "title", - &format!("KYT Canister Dashboard for Bitcoin ({})", btc_network), + &format!("Bitcoin Checker Canister Dashboard for ({})", btc_network), "wrong btc_network", ) } - pub fn has_kyt_mode(&self, kyt_mode: KytMode) -> &Self { + pub fn has_check_mode(&self, check_mode: CheckMode) -> &Self { self.has_string_value( - "#kyt-mode > td > code", - &format!("{}", kyt_mode), - "wrong KYT mode", + "#check-mode > td > code", + &format!("{}", check_mode), + "wrong check mode", ) } diff --git a/rs/bitcoin/kyt/src/fetch.rs b/rs/bitcoin/checker/src/fetch.rs similarity index 97% rename from rs/bitcoin/kyt/src/fetch.rs rename to rs/bitcoin/checker/src/fetch.rs index 81f011f6be0..20ddcd8e98f 100644 --- a/rs/bitcoin/kyt/src/fetch.rs +++ b/rs/bitcoin/checker/src/fetch.rs @@ -1,17 +1,17 @@ use crate::logs::WARN; use crate::state::{ FetchGuardError, FetchTxStatus, FetchTxStatusError, FetchedTx, HttpGetTxError, - TransactionKytData, + TransactionCheckData, }; use crate::{blocklist_contains, providers, state, Config}; use bitcoin::Transaction; use futures::future::try_join_all; -use ic_btc_interface::Txid; -use ic_btc_kyt::{ +use ic_btc_checker::{ get_tx_cycle_cost, CheckTransactionIrrecoverableError, CheckTransactionResponse, CheckTransactionRetriable, CheckTransactionStatus, INITIAL_MAX_RESPONSE_BYTES, RETRY_MAX_RESPONSE_BYTES, }; +use ic_btc_interface::Txid; use ic_canister_log::log; use std::convert::Infallible; @@ -94,7 +94,8 @@ pub trait FetchEnv { Ok(guard) => guard, Err(_) => return TryFetchResult::HighLoad, }; - let cycle_cost = get_tx_cycle_cost(max_response_bytes); + let num_subnet_nodes = self.config().num_subnet_nodes; + let cycle_cost = get_tx_cycle_cost(max_response_bytes, num_subnet_nodes); if self.cycles_accept(cycle_cost) < cycle_cost { TryFetchResult::NotEnoughCycles } else { @@ -121,7 +122,7 @@ pub trait FetchEnv { match self.http_get_tx(&provider, txid, max_response_bytes).await { Ok(tx) => { let input_addresses = tx.input.iter().map(|_| None).collect(); - match TransactionKytData::from_transaction(provider.btc_network(), tx.clone()) { + match TransactionCheckData::from_transaction(provider.btc_network(), tx.clone()) { Ok(tx) => { let fetched = FetchedTx { tx, diff --git a/rs/bitcoin/kyt/src/fetch/tests.rs b/rs/bitcoin/checker/src/fetch/tests.rs similarity index 93% rename from rs/bitcoin/kyt/src/fetch/tests.rs rename to rs/bitcoin/checker/src/fetch/tests.rs index c0eca23ad85..317899b3779 100644 --- a/rs/bitcoin/kyt/src/fetch/tests.rs +++ b/rs/bitcoin/checker/src/fetch/tests.rs @@ -4,8 +4,8 @@ use bitcoin::{ absolute::LockTime, address::Address, hashes::Hash, transaction::Version, Amount, OutPoint, PubkeyHash, ScriptBuf, Sequence, Transaction, TxIn, TxOut, Witness, }; -use ic_btc_kyt::{ - blocklist, BtcNetwork, KytMode, CHECK_TRANSACTION_CYCLES_REQUIRED, +use ic_btc_checker::{ + blocklist, BtcNetwork, CheckMode, CHECK_TRANSACTION_CYCLES_REQUIRED, CHECK_TRANSACTION_CYCLES_SERVICE_FEE, }; use ic_cdk::api::call::RejectionCode; @@ -24,6 +24,8 @@ struct MockEnv { called_provider: RefCell>, } +const TEST_SUBNET_NODES: u16 = 13; + impl FetchEnv for MockEnv { type FetchGuard = (); @@ -36,7 +38,7 @@ impl FetchEnv for MockEnv { } fn config(&self) -> Config { - Config::new_and_validate(BtcNetwork::Mainnet, KytMode::Normal).unwrap() + Config::new_and_validate(BtcNetwork::Mainnet, CheckMode::Normal, TEST_SUBNET_NODES).unwrap() } async fn http_get_tx( @@ -202,7 +204,7 @@ fn test_try_fetch_tx() { let txid_1 = mock_txid(1); let txid_2 = mock_txid(2); let from_tx = |tx: &bitcoin::Transaction| { - TransactionKytData::from_transaction(&env.config().btc_network(), tx.clone()).unwrap() + TransactionCheckData::from_transaction(&env.config().btc_network(), tx.clone()).unwrap() }; // case Fetched @@ -240,7 +242,7 @@ fn test_try_fetch_tx() { )); assert_eq!( env.cycles_available(), - available - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) + available - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) ); } @@ -252,7 +254,7 @@ async fn test_fetch_tx() { let txid_1 = mock_txid(1); let txid_2 = mock_txid(2); let from_tx = |tx: &bitcoin::Transaction| { - TransactionKytData::from_transaction(&env.config().btc_network(), tx.clone()).unwrap() + TransactionCheckData::from_transaction(&env.config().btc_network(), tx.clone()).unwrap() }; // case Fetched @@ -322,7 +324,7 @@ async fn test_check_fetched() { let tx_2 = mock_transaction_with_outputs(2); let network = env.config().btc_network(); let from_tx = |tx: &bitcoin::Transaction| { - TransactionKytData::from_transaction(&network, tx.clone()).unwrap() + TransactionCheckData::from_transaction(&network, tx.clone()).unwrap() }; // case Passed @@ -369,7 +371,7 @@ async fn test_check_fetched() { env.high_load = false; // case NotEnoughCycles - let env = MockEnv::new(get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) / 2); + let env = MockEnv::new(get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) / 2); assert!(matches!( env.check_fetched(txid_0, &fetched).await, CheckTransactionResponse::Unknown(CheckTransactionStatus::NotEnoughCycles) @@ -378,7 +380,8 @@ async fn test_check_fetched() { assert_eq!(env.cycles_available(), 0); // case Pending: need 2 inputs, but only able to get 1 for now - let env = MockEnv::new(get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) * 3 / 2); + let env = + MockEnv::new(get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) * 3 / 2); let fetched = FetchedTx { tx: from_tx(&tx_0), input_addresses: vec![None, None], @@ -394,7 +397,10 @@ async fn test_check_fetched() { // Check remaining cycle: we deduct all remaining cycles when they are not enough assert_eq!(env.cycles_available(), 0); // Continue to get another one, should pass - env.refill_cycles(get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES)); + env.refill_cycles(get_tx_cycle_cost( + INITIAL_MAX_RESPONSE_BYTES, + TEST_SUBNET_NODES, + )); env.expect_get_tx_with_reply(Ok(tx_2.clone())); assert!(matches!( env.check_fetched(txid_0, &fetched).await, @@ -421,7 +427,8 @@ async fn test_check_fetched() { // Check remaining cycle assert_eq!( env.cycles_available(), - CHECK_TRANSACTION_CYCLES_REQUIRED - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) * 2 + CHECK_TRANSACTION_CYCLES_REQUIRED + - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) * 2 ); // case Passed: need 2 inputs, and 1 already exists in cache. @@ -447,7 +454,8 @@ async fn test_check_fetched() { // Check remaining cycle assert_eq!( env.cycles_available(), - CHECK_TRANSACTION_CYCLES_REQUIRED - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) + CHECK_TRANSACTION_CYCLES_REQUIRED + - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) ); // case Pending: need 2 input, but 1 of them gives RetryWithBiggerBuffer error. @@ -477,8 +485,8 @@ async fn test_check_fetched() { assert_eq!( env.cycles_available(), CHECK_TRANSACTION_CYCLES_REQUIRED - - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) * 2 - - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES) + - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) * 2 + - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) ); // case Error: need 2 input, but 1 of them keeps giving RetryWithBiggerBuffer error. @@ -509,8 +517,8 @@ async fn test_check_fetched() { assert_eq!( env.cycles_available(), CHECK_TRANSACTION_CYCLES_REQUIRED - - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES) * 2 - - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES) + - get_tx_cycle_cost(INITIAL_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) * 2 + - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) ); // case HttpGetTxError can be retried. @@ -537,7 +545,7 @@ async fn test_check_fetched() { // Check remaining cycle. The cost should match RETRY_MAX_RESPONSE_BYTES assert_eq!( env.cycles_available(), - remaining_cycles - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES) + remaining_cycles - get_tx_cycle_cost(RETRY_MAX_RESPONSE_BYTES, TEST_SUBNET_NODES) ); // case Error: "Tx .. vout .. has no address ...". It should never happen diff --git a/rs/bitcoin/kyt/src/lib.rs b/rs/bitcoin/checker/src/lib.rs similarity index 83% rename from rs/bitcoin/kyt/src/lib.rs rename to rs/bitcoin/checker/src/lib.rs index 9f2cebf6d10..13e1531eb9e 100644 --- a/rs/bitcoin/kyt/src/lib.rs +++ b/rs/bitcoin/checker/src/lib.rs @@ -26,9 +26,14 @@ pub const INITIAL_MAX_RESPONSE_BYTES: u32 = 4 * 1024; /// Retry max response bytes is 400kB pub const RETRY_MAX_RESPONSE_BYTES: u32 = 400 * 1024; -pub fn get_tx_cycle_cost(max_response_bytes: u32) -> u128 { +pub fn get_tx_cycle_cost(max_response_bytes: u32, num_subnet_nodes: u16) -> u128 { + let n = num_subnet_nodes as u128; + let m = max_response_bytes as u128; + let base_fee = (3_000_000 + 60_000 * n) * n; // 1 KiB for request, max_response_bytes for response - 49_140_000 + 1024 * 5_200 + 10_400 * (max_response_bytes as u128) + let request_fee = 400 * n * 1024; + let response_fee = 800 * n * m; + base_fee + request_fee + response_fee } pub fn blocklist_contains(address: &Address) -> bool { diff --git a/rs/bitcoin/kyt/src/logs.rs b/rs/bitcoin/checker/src/logs.rs similarity index 100% rename from rs/bitcoin/kyt/src/logs.rs rename to rs/bitcoin/checker/src/logs.rs diff --git a/rs/bitcoin/kyt/src/main.rs b/rs/bitcoin/checker/src/main.rs similarity index 86% rename from rs/bitcoin/kyt/src/main.rs rename to rs/bitcoin/checker/src/main.rs index 92c29cf88e4..15f01d4197f 100644 --- a/rs/bitcoin/kyt/src/main.rs +++ b/rs/bitcoin/checker/src/main.rs @@ -1,11 +1,11 @@ use bitcoin::{consensus::Decodable, Address, Transaction}; -use ic_btc_interface::Txid; -use ic_btc_kyt::{ +use ic_btc_checker::{ blocklist_contains, get_tx_cycle_cost, BtcNetwork, CheckAddressArgs, CheckAddressResponse, - CheckTransactionArgs, CheckTransactionIrrecoverableError, CheckTransactionResponse, - CheckTransactionRetriable, CheckTransactionStatus, KytArg, KytMode, + CheckArg, CheckMode, CheckTransactionArgs, CheckTransactionIrrecoverableError, + CheckTransactionResponse, CheckTransactionRetriable, CheckTransactionStatus, CHECK_TRANSACTION_CYCLES_REQUIRED, CHECK_TRANSACTION_CYCLES_SERVICE_FEE, }; +use ic_btc_interface::Txid; use ic_canister_log::{export as export_logs, log}; use ic_canisters_http_types as http; use ic_cdk::api::call::RejectionCode; @@ -43,24 +43,24 @@ pub fn is_response_too_large(code: &RejectionCode, message: &str) -> bool { } #[ic_cdk::query] -/// Return `Passed` if the given bitcion address passed the KYT check, or +/// Return `Passed` if the given bitcion address passed the check, or /// `Failed` otherwise. /// May throw error (trap) if the given address is malformed or not a mainnet address. fn check_address(args: CheckAddressArgs) -> CheckAddressResponse { let config = get_config(); let btc_network = config.btc_network(); let address = Address::from_str(args.address.trim()) - .unwrap_or_else(|err| ic_cdk::trap(&format!("Invalid bitcoin address: {}", err))) + .unwrap_or_else(|err| ic_cdk::trap(&format!("Invalid Bitcoin address: {}", err))) .require_network(btc_network.clone().into()) .unwrap_or_else(|err| { - ic_cdk::trap(&format!("Not a bitcoin {} address: {}", btc_network, err)) + ic_cdk::trap(&format!("Not a Bitcoin {} address: {}", btc_network, err)) }); STATS.with(|s| s.borrow_mut().check_transaction_count += 1); - match config.kyt_mode() { - KytMode::AcceptAll => CheckAddressResponse::Passed, - KytMode::RejectAll => CheckAddressResponse::Failed, - KytMode::Normal => { + match config.check_mode { + CheckMode::AcceptAll => CheckAddressResponse::Passed, + CheckMode::RejectAll => CheckAddressResponse::Failed, + CheckMode::Normal => { if blocklist_contains(&address) { return CheckAddressResponse::Failed; } @@ -71,7 +71,7 @@ fn check_address(args: CheckAddressArgs) -> CheckAddressResponse { #[ic_cdk::update] /// Return `Passed` if all input addresses of the transaction of the given -/// transaction id passed the KYT check, or `Failed` if any of them did not. +/// transaction id passed the check, or `Failed` if any of them did not. /// /// Every call to check_transaction must attach at least `CHECK_TRANSACTION_CYCLES_REQUIRED`. /// Return `NotEnoughCycles` if not enough cycles are attached. @@ -118,29 +118,41 @@ fn transform(raw: TransformArgs) -> HttpResponse { } #[ic_cdk::init] -fn init(arg: KytArg) { +fn init(arg: CheckArg) { match arg { - KytArg::InitArg(init_arg) => set_config( - Config::new_and_validate(init_arg.btc_network, init_arg.kyt_mode) - .unwrap_or_else(|err| ic_cdk::trap(&format!("error creating config: {}", err))), + CheckArg::InitArg(init_arg) => set_config( + Config::new_and_validate( + init_arg.btc_network, + init_arg.check_mode, + state::default_num_subnet_nodes(), + ) + .unwrap_or_else(|err| ic_cdk::trap(&format!("error creating config: {}", err))), ), - KytArg::UpgradeArg(_) => { + CheckArg::UpgradeArg(_) => { ic_cdk::trap("cannot init canister state without init args"); } } } #[ic_cdk::post_upgrade] -fn post_upgrade(arg: KytArg) { +fn post_upgrade(arg: CheckArg) { match arg { - KytArg::UpgradeArg(arg) => { - if let Some(kyt_mode) = arg.and_then(|arg| arg.kyt_mode) { - let config = Config::new_and_validate(get_config().btc_network(), kyt_mode) + CheckArg::UpgradeArg(arg) => { + let old_config = get_config(); + let num_subnet_nodes = arg + .as_ref() + .and_then(|arg| arg.num_subnet_nodes) + .unwrap_or(old_config.num_subnet_nodes); + let check_mode = arg + .as_ref() + .and_then(|arg| arg.check_mode) + .unwrap_or(old_config.check_mode); + let config = + Config::new_and_validate(old_config.btc_network(), check_mode, num_subnet_nodes) .unwrap_or_else(|err| ic_cdk::trap(&format!("error creating config: {}", err))); - set_config(config); - } + set_config(config); } - KytArg::InitArg(_) => ic_cdk::trap("cannot upgrade canister state without upgrade args"), + CheckArg::InitArg(_) => ic_cdk::trap("cannot upgrade canister state without upgrade args"), } } @@ -170,7 +182,7 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { writer .gauge_vec("cycle_balance", "The canister cycle balance.") .unwrap() - .value(&[("canister", "btc-kyt")], cycle_balance) + .value(&[("canister", "btc-checker")], cycle_balance) .unwrap(); writer @@ -193,7 +205,7 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { let stats = s.borrow(); let mut counter = writer .counter_vec( - "btc_kyt_http_calls_total", + "btc_checker_http_calls_total", "The number of http outcalls made since the last canister upgrade.", ) .unwrap(); @@ -210,7 +222,7 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { } let mut counter = writer .counter_vec( - "btc_kyt_http_response_size", + "btc_checker_http_response_size", "The byte sizes of http outcall responses.", ) .unwrap(); @@ -221,8 +233,8 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { } writer .counter_vec( - "ckbtc_kyt_requests_total", - "The number of KYT requests received since the last canister upgrade.", + "btc_check_requests_total", + "The number of check requests received since the last canister upgrade.", ) .unwrap() .value( @@ -308,9 +320,9 @@ fn http_request(req: http::HttpRequest) -> http::HttpResponse { } } -struct KytCanisterEnv; +struct BtcCheckerCanisterEnv; -impl FetchEnv for KytCanisterEnv { +impl FetchEnv for BtcCheckerCanisterEnv { type FetchGuard = state::FetchGuard; fn new_fetch_guard(&self, txid: Txid) -> Result { @@ -335,7 +347,8 @@ impl FetchEnv for KytCanisterEnv { message: err, })?; let url = request.url.clone(); - let cycles = get_tx_cycle_cost(max_response_bytes); + let num_subnet_nodes = self.config().num_subnet_nodes; + let cycles = get_tx_cycle_cost(max_response_bytes, num_subnet_nodes); match http_request(request.clone(), cycles).await { Ok((response,)) => { STATS.with(|s| { @@ -425,11 +438,11 @@ impl FetchEnv for KytCanisterEnv { /// If not, we need to additionally fetch those input transactions /// in order to compute their corresponding addresses. pub async fn check_transaction_inputs(txid: Txid) -> CheckTransactionResponse { - let env = &KytCanisterEnv; - match env.config().kyt_mode() { - KytMode::AcceptAll => CheckTransactionResponse::Passed, - KytMode::RejectAll => CheckTransactionResponse::Failed(Vec::new()), - KytMode::Normal => { + let env = &BtcCheckerCanisterEnv; + match env.config().check_mode { + CheckMode::AcceptAll => CheckTransactionResponse::Passed, + CheckMode::RejectAll => CheckTransactionResponse::Failed(Vec::new()), + CheckMode::Normal => { match env.try_fetch_tx(txid) { TryFetchResult::Pending => CheckTransactionRetriable::Pending.into(), TryFetchResult::HighLoad => CheckTransactionRetriable::HighLoad.into(), @@ -464,7 +477,7 @@ fn check_candid_interface_compatibility() { // check the public interface against the actual one let old_interface = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()) - .join("btc_kyt_canister.did"); + .join("btc_checker_canister.did"); service_equal( CandidSource::Text(dbg!(&new_interface)), diff --git a/rs/bitcoin/kyt/src/providers.rs b/rs/bitcoin/checker/src/providers.rs similarity index 98% rename from rs/bitcoin/kyt/src/providers.rs rename to rs/bitcoin/checker/src/providers.rs index 51496544ae2..a7e141c7eaf 100644 --- a/rs/bitcoin/kyt/src/providers.rs +++ b/rs/bitcoin/checker/src/providers.rs @@ -9,7 +9,7 @@ use std::fmt; #[cfg(test)] mod tests; -/// Return the next bitcoin API provider for the given `btc_network`. +/// Return the next Bitcoin API provider for the given `btc_network`. /// /// Internally it remembers the previously used provider in a thread local /// state and would iterate through all providers in a round-robin manner. @@ -108,7 +108,7 @@ impl Provider { } (provider, btc_network) => { panic!( - "Provider {} does not support bitcoin {}", + "Provider {} does not support Bitcoin {}", provider, btc_network ) } diff --git a/rs/bitcoin/kyt/src/providers/tests.rs b/rs/bitcoin/checker/src/providers/tests.rs similarity index 100% rename from rs/bitcoin/kyt/src/providers/tests.rs rename to rs/bitcoin/checker/src/providers/tests.rs diff --git a/rs/bitcoin/kyt/src/state.rs b/rs/bitcoin/checker/src/state.rs similarity index 94% rename from rs/bitcoin/kyt/src/state.rs rename to rs/bitcoin/checker/src/state.rs index a1aec6f5607..01e39b67391 100644 --- a/rs/bitcoin/kyt/src/state.rs +++ b/rs/bitcoin/checker/src/state.rs @@ -1,6 +1,6 @@ use crate::{ providers::{parse_authorization_header_from_url, Provider}, - BtcNetwork, KytMode, + BtcNetwork, CheckMode, }; use bitcoin::{Address, Transaction}; use ic_btc_interface::Txid; @@ -72,7 +72,7 @@ pub struct FetchTxStatusError { /// input address will be computed and filled in. #[derive(Clone, Debug)] pub struct FetchedTx { - pub tx: TransactionKytData, + pub tx: TransactionCheckData, pub input_addresses: Vec>, } @@ -80,7 +80,7 @@ pub struct FetchedTx { /// store relevant bits, including inputs (which are previous /// outputs) and output addresses. #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -pub struct TransactionKytData { +pub struct TransactionCheckData { pub inputs: Vec, pub outputs: Vec>, } @@ -91,7 +91,7 @@ pub struct PreviousOutput { pub vout: u32, } -impl TransactionKytData { +impl TransactionCheckData { pub fn from_transaction( btc_network: &BtcNetwork, tx: Transaction, @@ -127,7 +127,7 @@ const MAX_CONCURRENT: u32 = 50; // is about 400 bytes, the estimated memory usage of the cache is in the order of 10s of MBs. const MAX_FETCH_TX_ENTRIES: usize = 10_000; -// The internal KYT state includes: +// The internal state includes: // 1. Outcall capacity, a semaphore limiting max concurrent outcalls. // 2. fetch transaction status, indexed by transaction id. // @@ -278,30 +278,37 @@ impl Drop for FetchGuard { } } -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct Config { btc_network: BtcNetwork, - kyt_mode: KytMode, + pub check_mode: CheckMode, + #[serde(default = "default_num_subnet_nodes")] + pub num_subnet_nodes: u16, +} + +pub(crate) fn default_num_subnet_nodes() -> u16 { + 34 } impl Config { - pub fn new_and_validate(btc_network: BtcNetwork, kyt_mode: KytMode) -> Result { + pub fn new_and_validate( + btc_network: BtcNetwork, + check_mode: CheckMode, + num_subnet_nodes: u16, + ) -> Result { if let BtcNetwork::Regtest { json_rpc_url } = &btc_network { let _ = parse_authorization_header_from_url(json_rpc_url)?; } Ok(Self { btc_network, - kyt_mode, + check_mode, + num_subnet_nodes, }) } pub fn btc_network(&self) -> BtcNetwork { self.btc_network.clone() } - - pub fn kyt_mode(&self) -> KytMode { - self.kyt_mode - } } #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/rs/bitcoin/kyt/src/state/tests.rs b/rs/bitcoin/checker/src/state/tests.rs similarity index 68% rename from rs/bitcoin/kyt/src/state/tests.rs rename to rs/bitcoin/checker/src/state/tests.rs index e0f8687d173..214a0c3357c 100644 --- a/rs/bitcoin/kyt/src/state/tests.rs +++ b/rs/bitcoin/checker/src/state/tests.rs @@ -55,7 +55,7 @@ fn test_fetch_status() { let tx = Transaction::consensus_decode(&mut bytes.to_vec().as_slice()).unwrap(); let txid_1 = Txid::from(*(tx.compute_txid().as_ref() as &[u8; 32])); let from_tx = |tx: &bitcoin::Transaction| { - TransactionKytData::from_transaction(&BtcNetwork::Mainnet, tx.clone()).unwrap() + TransactionCheckData::from_transaction(&BtcNetwork::Mainnet, tx.clone()).unwrap() }; set_fetch_status( txid_1, @@ -154,3 +154,82 @@ fn cache_should_have_same_size() { assert_eq!(cache.status.len(), 1); assert_eq!(cache.created.len(), 1); } + +mod schema_upgrades { + use crate::state::Config; + use candid::Deserialize; + use ic_btc_checker::{BtcNetwork, CheckMode}; + use proptest::arbitrary::any; + use proptest::prelude::{Just, Strategy}; + use proptest::{prop_oneof, proptest}; + use serde::Serialize; + + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] + pub struct ConfigPreviousVersion { + btc_network: BtcNetwork, + check_mode: CheckMode, + } + + impl From for ConfigPreviousVersion { + fn from( + Config { + btc_network, + check_mode, + num_subnet_nodes: _, + }: Config, + ) -> Self { + Self { + btc_network, + check_mode, + } + } + } + + proptest! { + #[test] + fn should_be_able_to_upgrade_state(config in arb_config()) { + let config_before_upgrade: ConfigPreviousVersion = config.into(); + + let serialized_config_before_upgrade = encode(&config_before_upgrade); + let config_after_upgrade: Config = decode(serialized_config_before_upgrade.as_slice()); + assert_eq!(config_before_upgrade, config_after_upgrade.clone().into()); + } + } + + fn encode(state: &S) -> Vec { + let mut buf = vec![]; + ciborium::ser::into_writer(state, &mut buf).expect("failed to encode state"); + buf + } + + fn decode(bytes: &[u8]) -> T { + ciborium::de::from_reader(bytes) + .unwrap_or_else(|e| panic!("failed to decode state bytes {}: {e}", hex::encode(bytes))) + } + + pub fn arb_config() -> impl Strategy { + (arb_btc_network(), arb_check_mode(), any::()).prop_map( + |(btc_network, check_mode, num_subnet_nodes)| Config { + btc_network, + check_mode, + num_subnet_nodes, + }, + ) + } + + pub fn arb_btc_network() -> impl Strategy { + prop_oneof![ + Just(BtcNetwork::Mainnet), + Just(BtcNetwork::Testnet), + ".*".prop_map(|json_rpc_url| BtcNetwork::Regtest { json_rpc_url }), + ] + } + + pub fn arb_check_mode() -> impl Strategy { + prop_oneof![ + Just(CheckMode::AcceptAll), + Just(CheckMode::RejectAll), + Just(CheckMode::Normal), + ] + } +} diff --git a/rs/bitcoin/kyt/src/types.rs b/rs/bitcoin/checker/src/types.rs similarity index 93% rename from rs/bitcoin/kyt/src/types.rs rename to rs/bitcoin/checker/src/types.rs index 0973fa5322f..e2fd5f9c8e0 100644 --- a/rs/bitcoin/kyt/src/types.rs +++ b/rs/bitcoin/checker/src/types.rs @@ -21,9 +21,9 @@ pub struct CheckTransactionArgs { #[derive(CandidType, Debug, Clone, Deserialize, Serialize)] pub enum CheckTransactionResponse { - /// When check finishes and all input addresses passed KYT. + /// When check finishes and all input addresses passed. Passed, - /// When check finishes and one or more input addresses failed KYT. + /// When check finishes and one or more input addresses failed. /// The list of failed addresses are returned as a best effort, which may be non-exhaustive. Failed(Vec), /// Unknown case where it is unable to give a final answer of Passed or Failed. @@ -82,7 +82,7 @@ impl From for CheckTransactionResponse { #[derive(CandidType, Clone, Debug, Deserialize, Serialize)] pub struct InitArg { pub btc_network: BtcNetwork, - pub kyt_mode: KytMode, + pub check_mode: CheckMode, } #[derive(CandidType, Clone, Deserialize, Debug, Eq, PartialEq, Serialize, Hash)] @@ -96,13 +96,13 @@ pub enum BtcNetwork { } #[derive(CandidType, Clone, Copy, Deserialize, Debug, Eq, PartialEq, Serialize, Hash)] -pub enum KytMode { +pub enum CheckMode { AcceptAll, RejectAll, Normal, } -impl fmt::Display for KytMode { +impl fmt::Display for CheckMode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { Self::AcceptAll => write!(f, "AcceptAll"), @@ -132,13 +132,14 @@ impl fmt::Display for BtcNetwork { } } -#[derive(CandidType, Debug, Deserialize, Serialize)] +#[derive(CandidType, Debug, Default, Deserialize, Serialize)] pub struct UpgradeArg { - pub kyt_mode: Option, + pub check_mode: Option, + pub num_subnet_nodes: Option, } #[derive(CandidType, Debug, Deserialize, Serialize)] -pub enum KytArg { +pub enum CheckArg { InitArg(InitArg), UpgradeArg(Option), } diff --git a/rs/bitcoin/kyt/templates/dashboard.html b/rs/bitcoin/checker/templates/dashboard.html similarity index 95% rename from rs/bitcoin/kyt/templates/dashboard.html rename to rs/bitcoin/checker/templates/dashboard.html index 4d09f8c2559..eaa416d3c8e 100644 --- a/rs/bitcoin/kyt/templates/dashboard.html +++ b/rs/bitcoin/checker/templates/dashboard.html @@ -34,7 +34,7 @@ - KYT Canister Dashboard for Bitcoin ({{ config.btc_network() }}) + Bitcoin Checker Canister Dashboard for ({{ config.btc_network() }})