Proposal to elect new release rc--2024-12-06_03-16

proposal - 134408

Vote: ADOPT

Reason:

All the changes align with the commit description and no errors or anomalies found in the code changes introduced. Also, successfully ran the build verification script.

Hash Match: MATCH

Feedback:

Proposer Check: MATCH

Overall Summary:

Updates introduce more robust and flexible configuration and logging to the boundary nodes, including a new environment file, improved metrics and anonymization features, and support for a BIP341-compatible auxiliary field in Schnorr signatures. They also ensure deterministic linking of LMDB, integrate macaddr and NodeType for flexible IPv6 and MAC address generation, and refine testing, metrics, and migration logic for ledger and consensus.

Commits Summary

ad36e6b0d
Adds a new environment file ic-boundary.env and includes it in the boundary node’s startup configuration by using the env-file-reader crate. The boundary node process is adjusted to read environment variables from the new env file, passing them to the process as part of its startup environment.

af2605ffb
Adds a second optional target for fstrim to discard unused blocks on the replica data partition if the node is unassigned.

8ec2ca18b
Enables wasm_tail_call. There were performance improvements when doing ReturnCall.

a2a6247f8
Optional taproot_tree_root field to SchnorrArguments and updates its handling throughout the consensus and execution environment code. It modifies functions, test utilities, and protobuf definitions to accept and process taproot_tree_root when creating or parsing Schnorr signature arguments. The TODO comment suggest there is more logic on the way.

8d726cc67
Introduces code paths and logic to move ledger data from older, in-memory or legacy formats into stable data structures, using minicbor for serialization. The changes also include added logic to track migration progress, handle partially migrated states, and eventually finalize the migration so that the ledger can resume normal operations.

This migration seems like a really crucial change to Ledger. I am wondering if there is any way we can test the migration and how it will take place. Is there anything CodeGov can do to help test the migration?

bed178d77
Adds additional metrics about subnet configuration, including subnet size, features, and maximum canister capacity. It also modifies the registry reading logic to populate and record these new metrics.

e41a4efb7
New histograms and updates existing metrics to capture wall-clock latencies and durations for various steps in the consensus and message routing processes, including batch delivery, batch induction, and certification.

b6e0faa05
New file src/update_config.rs. This file reads various configuration files (like network.conf, filebeat.conf, and nns.conf) and sets up network, logging, and NNS parameters for a node. It then serializes the gathered configuration into JSON and writes it out to config.json, enabling updates to the node’s configuration without containing secret materials.

8a538aac7
Ensures LMDB is now linked deterministically and at the lmdb-rkv-sys crate build stage rather than relying on late-stage, accidental static linking. By applying a patch that allows specifying a custom LMDB archive path instead of LMDB_NO_BUILD, and providing a pre-built liblmdb.a static archive via Bazel, LMDB is statically linked during the crate’s build.

ee08c5875
Now uses erestorecon instead of prestorecon.

bd92560a7
Replaces the taproot_tree_root field with a more general aux argument in the SignWithSchnorrArgs structure, allowing for BIP341-like auxiliary data (e.g., a merkle_root_hash) to be passed in. It updates all relevant call sites and tests so that the auxiliary argument is consistently used.

05f660259
Renames the anonymization-backend crate to anonymization_backend and adjusts its entry point from src/lib.rs to src/main.rs, clarifying its usage as an executable rather than a library. Additionally, it updates the ic-agent and ic-transport-types dependencies to specified versions and integrates the anonymization client into the boundary node code.

Integrates log anonymization into ic-boundary by referencing a hard-coded anonymization canister ID and tracking a salt fetched from that canister. This salt is then used to hash sensitive fields like IP addresses and principal IDs in request logs, ensuring they are not stored in cleartext. Changes in core.rs, metrics.rs, and related configuration files implement this anonymization logic throughout the boundary node’s request handling and logging process.

1368f04cc
Sets limit for debug_assertions to 1k cache entries. Matches description.

df6e86ced
Reverts changes from prev commits feat: [NODE-1355] Upgrade build container to 24.04 by Bownairo · Pull Request #1946 · dfinity/ic · GitHub and fix(IDX): libtinfo5-6.4 is no longer available in ubuntu so use 6.3 by basvandijk · Pull Request #2858 · dfinity/ic · GitHub.

23d181e50
Matches description of fixing Elasticsearch URLs and index patterns for testnet environment.

4158ba727
Fix permissions for upgrade-shared-data-store/upgrade-shared-data-store.sh by replacing the replica check with the corrected ic-replica.

796a29be6
Perf refactor for state manager commit_and_certify. It now calculates next_tip before self.states.write.

05c96cbd1
More renaming changes for idkg_key to chain_key.

57dc741a9
Removed all tests related to ic-scenario-tests.

b3ab4bf9a
FIX
There is a spelling error with handle_inbound_conn_attemp. Logic related to handle_dial has been consolidated in function can_i_dial_to improving reuse.

a8d210455
This moves code from canister_client/src/cbor.rs to separate file canister_client/read_state_response_parser/src/lib.rs, so now we have a new package ic-read-state-response-parser.

3466a3205
Streamlines the use of pigz lib since it is packaged in the Bazel central registry.

9f5674ce6
Updates base image refs.

2a400f53b
Updates base image refs.

0ab07de46
Renames idkg_subnet_public_keys to chain_key_subnet_public_keys.

006709366
Mainly improvements to quic transport error handling. quinn_client_config, client_config are moved outside async conn_fut.

697c20ccd
Integrate the macaddr crate and update various configuration files and scripts to use the new macaddr type and a NodeType enum rather than relying on hardcoded indices. Modify the generation of deterministic MAC and IPv6 addresses, removing the deterministic_ips dependency and making the code more flexible.

51f1c7e21
Extends ExhaustiveSet to include VetKdCurve, VetKdKeyId IDkgMasterPublicKeyId. Changes are related to testing of serialization correctness related to types.

9a95ec743
Matches description to fix race conditions by stopping the background monitoring thread.

aab432742
Test checks that all error codes can be converted to a valid reject code.