ERROR: VotingPowerEconomics not found while pruning_some_following. Falling back to default. (This is actually ok in tests.)

I’m migrating the installation of the NNS canister in Juno Docker from Protobuf to Candid as requested. While I believe I’ve converted all the parameters that worked with the former, I’m now running into issues with the latter.

Notably:

juno-console-1  | 2025-05-13 10:35:49.443879924 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: VotingPowerEconomics not found while pruning_some_following. Falling back to default. (This is actually ok in tests.)
juno-console-1  | May 13 10:35:53.317 ERRO s:lohgn-s4lbl-7o7rg-yaswt-aza4a-zaje4-d2tmi-yokqo-di4k4-tc22q-kae/n:2lrry-e3gv5-bhi2g-fj4dl-vdkee-n2svx-vbhpd-mjlh2-pvaat-lysj2-cqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(rkp4c-7iaaa-aaaaa-aaaca-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 11, payment: Cycles(0), method_name: "neuron_maturity_modulation", method_payload: "6 bytes;4449444c0000", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747132551098919216) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped'.
juno-console-1  | May 13 10:35:53.338 ERRO s:lohgn-s4lbl-7o7rg-yaswt-aza4a-zaje4-d2tmi-yokqo-di4k4-tc22q-kae/n:2lrry-e3gv5-bhi2g-fj4dl-vdkee-n2svx-vbhpd-mjlh2-pvaat-lysj2-cqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(rkp4c-7iaaa-aaaaa-aaaca-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 11, payment: Cycles(0), method_name: "neuron_maturity_modulation", method_payload: "6 bytes;4449444c0000", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747132551098919216) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped'.
juno-console-1  | 2025-05-13 10:35:52.154901342 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Couldn't update maturity modulation. Error: Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped

...

juno-console-1  | May 13 10:35:54.152 ERRO s:lohgn-s4lbl-7o7rg-yaswt-aza4a-zaje4-d2tmi-yokqo-di4k4-tc22q-kae/n:2lrry-e3gv5-bhi2g-fj4dl-vdkee-n2svx-vbhpd-mjlh2-pvaat-lysj2-cqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(rkp4c-7iaaa-aaaaa-aaaca-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 14, payment: Cycles(0), method_name: "neuron_maturity_modulation", method_payload: "6 bytes;4449444c0000", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747132553415465967) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped'.
juno-console-1  | May 13 10:35:54.153 ERRO s:lohgn-s4lbl-7o7rg-yaswt-aza4a-zaje4-d2tmi-yokqo-di4k4-tc22q-kae/n:2lrry-e3gv5-bhi2g-fj4dl-vdkee-n2svx-vbhpd-mjlh2-pvaat-lysj2-cqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(rkp4c-7iaaa-aaaaa-aaaca-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 14, payment: Cycles(0), method_name: "neuron_maturity_modulation", method_payload: "6 bytes;4449444c0000", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747132553415465967) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped'.
...
juno-console-1  | 2025-05-13 10:35:54.077531259 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Couldn't update maturity modulation. Error: Canister rkp4c-7iaaa-aaaaa-aaaca-cai is stopped
juno-console-1  | 2025-05-13 10:35:54.077531259 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Updated daily maturity modulation rate to (in basis points): 0, at: 1747132554. Last updated: None
...
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: Falling back to default VotingPowerEconomics.
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: Falling back to default VotingPowerEconomics.
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 1 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747132555, yes: 0, no: 0, total: 0 }
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: Falling back to default VotingPowerEconomics.
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: Falling back to default VotingPowerEconomics.
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 2 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747132555, yes: 249914192248458, no: 0, total: 249914192248458 }
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rkp4c-7iaaa-aaaaa-aaaca-cai] [cycles] setting default subnet list
juno-console-1  | 2025-05-13 10:35:55.391134010 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Execution of proposal: 2 succeeded. (Proposal title: Some("Authorize CMC to create canisters in subnets"))

Any idea what initial parameters are missing?

The PR: https://github.com/junobuild/juno-docker/pull/125

1 Like

I am a TypeScript n00b, but I think you are not populating the voting_power_economics field within NetworkEconomics.

1 Like

Thanks Daniel! Well spotted, I forgot to generate the latest did types :sweat_smile:.

Do you know what value I should or could use for local development?

export interface VotingPowerEconomics {
  start_reducing_voting_power_after_seconds: [] | [bigint];
  neuron_minimum_dissolve_delay_to_vote_seconds: [] | [bigint];
  clear_following_after_seconds: [] | [bigint];
}

I’ve set voting_power_economics to None, which seems to result in fewer errors, but I still got this one:

juno-console-1 | 2025-05-13 16:04:32.470065543 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] ERROR: VotingPowerEconomics not found while pruning_some_following. Falling back to default. (This is actually ok in tests.)

According to the label, it’s fine in tests, but it floods the terminal output adding an error every few seconds. So, what value should actually be set?

It seems I can resolve the issue by setting the default values (code). Not sure why the field is optional then. :man_shrugging:

const ONE_DAY_SECONDS = 24n * 60n * 60n;
  const ONE_YEAR_SECONDS = ((4n * 365n + 1n) * ONE_DAY_SECONDS) / 4n;
  const ONE_MONTH_SECONDS = ONE_YEAR_SECONDS / 12n;

voting_power_economics: [
      {
        start_reducing_voting_power_after_seconds: [6n * ONE_MONTH_SECONDS],
        clear_following_after_seconds: [ONE_MONTH_SECONDS],
        neuron_minimum_dissolve_delay_to_vote_seconds: [6n * ONE_MONTH_SECONDS]
      }
    ]

I’m now facing another issue:

juno-console-1 | 2025-05-13 16:25:06.441165092 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Error when getting total ICP supply: External: Error calling method ‘icrc1_total_supply’ of the ledger canister. Code: 5. Message: Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped

Is the Governance canister now expecting the ICP Ledger to be mounted before installation?

Update: Actually it seems the installation worked out. It might be that a post installation scripts, like the one that setup the XDR rate through proposal.

Or it’s just the canister logging that became verbose? Because I get errors but, ultimately it still seems to work out.

juno-console-1  | 2025-05-13 16:25:04.051130257 UTC: [Canister ryjl3-tyaaa-aaaaa-aaaba-cai] [ledger] init(): using default maximum message size: 1048576
juno-console-1  | May 13 16:25:08.921 ERRO s:qgeck-5r5qo-4cuii-2sah3-2lgwi-ea5ie-bew3d-a4li3-wljkd-emf6a-fqe/n:x3qgc-4f7y6-fcbrc-lu56b-moxme-uqvk2-xx4o6-ryovm-mut3n-dd26n-zqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(ryjl3-tyaaa-aaaaa-aaaba-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 9, payment: Cycles(0), method_name: "icrc1_total_supply", method_payload: "7 bytes;4449444c00017f", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747153505724959550) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped'.
juno-console-1  | 🚀  Console deployed. ID: cokmz-oiaaa-aaaal-aby6q-cai
juno-console-1  | 🚀  CMC deployed. ID: rkp4c-7iaaa-aaaaa-aaaca-cai
juno-console-1  | 🚀  NNS Governance deployed. ID: rrkah-fqaaa-aaaaa-aaaaq-cai
juno-console-1  | 2025-05-13 16:25:06.441165092 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Error when getting total ICP supply: External: Error calling method 'icrc1_total_supply' of the ledger canister. Code: 5. Message: Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped
juno-console-1  | May 13 16:25:10.501 ERRO s:qgeck-5r5qo-4cuii-2sah3-2lgwi-ea5ie-bew3d-a4li3-wljkd-emf6a-fqe/n:x3qgc-4f7y6-fcbrc-lu56b-moxme-uqvk2-xx4o6-ryovm-mut3n-dd26n-zqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(ryjl3-tyaaa-aaaaa-aaaba-cai), sender: CanisterId(rrkah-fqaaa-aaaaa-aaaaq-cai), sender_reply_callback: 11, payment: Cycles(0), method_name: "icrc1_total_supply", method_payload: "7 bytes;4449444c00017f", metadata: RequestMetadata { call_tree_depth: 0, call_tree_start_time: Time(1747153506441165092) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped'.
juno-console-1  | 2025-05-13 16:25:07.694212259 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Error when getting total ICP supply: External: Error calling method 'icrc1_total_supply' of the ledger canister. Code: 5. Message: Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped
juno-console-1  | May 13 16:25:10.519 ERRO s:qgeck-5r5qo-4cuii-2sah3-2lgwi-ea5ie-bew3d-a4li3-wljkd-emf6a-fqe/n:x3qgc-4f7y6-fcbrc-lu56b-moxme-uqvk2-xx4o6-ryovm-mut3n-dd26n-zqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(ryjl3-tyaaa-aaaaa-aaaba-cai), sender: CanisterId(qhbym-qaaaa-aaaaa-aaafq-cai), sender_reply_callback: 2, payment: Cycles(0), method_name: "query_encoded_blocks", method_payload: "37 bytes;4449444c016c02e2e8ada00878e6a99ef8097801000000000000000000d007000000000000", metadata: RequestMetadata { call_tree_depth: 1, call_tree_start_time: Time(1747153507694212259) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped'.
juno-console-1  | May 13 16:25:10.522 ERRO s:qgeck-5r5qo-4cuii-2sah3-2lgwi-ea5ie-bew3d-a4li3-wljkd-emf6a-fqe/n:x3qgc-4f7y6-fcbrc-lu56b-moxme-uqvk2-xx4o6-ryovm-mut3n-dd26n-zqe/ic_execution_environment/scheduler Inducting Request(Request { receiver: CanisterId(ryjl3-tyaaa-aaaaa-aaaba-cai), sender: CanisterId(qhbym-qaaaa-aaaaa-aaafq-cai), sender_reply_callback: 2, payment: Cycles(0), method_name: "query_encoded_blocks", method_payload: "37 bytes;4449444c016c02e2e8ada00878e6a99ef8097801000000000000000000d007000000000000", metadata: RequestMetadata { call_tree_depth: 1, call_tree_start_time: Time(1747153507694212259) }, deadline: CoarseTime(0) }) on same subnet failed with error 'Canister ryjl3-tyaaa-aaaaa-aaaba-cai is stopped'.
juno-console-1  | 🚀  ICP Index deployed. ID: qhbym-qaaaa-aaaaa-aaafq-cai
juno-console-1  | 🚀  ICP Ledger deployed. ID: ryjl3-tyaaa-aaaaa-aaaba-cai
juno-console-1  | 2025-05-13 16:25:10.794315719 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Updated daily maturity modulation rate to (in basis points): 0, at: 1747153510. Last updated: None
juno-console-1  | 🚀  Observatory deployed. ID: klbfr-lqaaa-aaaak-qbwsa-cai
juno-console-1  | 🚀  Internet Identity deployed. ID: rdmx6-jaaaa-aaaaa-aaadq-cai
juno-console-1  | 2025-05-13 16:25:12.739262095 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 1 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747153512, yes: 0, no: 0, total: 0 }
juno-console-1  | 2025-05-13 16:25:12.739262095 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Proposal 2 decided, thanks to majority. Tally at decision time: Tally { timestamp_seconds: 1747153512, yes: 249914192248458, no: 0, total: 249914192248458 }
juno-console-1  | 2025-05-13 16:25:12.739262095 UTC: [Canister rkp4c-7iaaa-aaaaa-aaaca-cai] [cycles] setting default subnet list
juno-console-1  | 2025-05-13 16:25:12.739262095 UTC: [Canister rrkah-fqaaa-aaaaa-aaaaq-cai] [Governance] Execution of proposal: 2 succeeded. (Proposal title: Some("Authorize CMC to create canisters in subnets"))
juno-console-1  | 🫠  CMC post-install. ID: rkp4c-7iaaa-aaaaa-aaaca-cai
juno-console-1  | 🫠  NNS Governance post-install. ID: rrkah-fqaaa-aaaaa-aaaaq-cai

Not sure what questions you have remaining, but yes, Governance does call Ledger. Off the top of my head, I know this is used to calculate voting rewards, but there may be other reasons that Governance calls Ledger. My guess is that Ledger does not call Governance (but I am not totally sure about this), so it would make sense to me if Ledger were installed before Governance.

Fair enough, my question was a bit vague. What I’m really trying to understand is: what changed in the Governance canister that’s causing this issue?

I don’t encounter the problem on main; it only happens on a branch that specifically updates the NNS Governance canister. So it seems that something in that canister now causes it to require the ICP Ledger during deployment (pre-during-or post installation).

Either:

  • something in the Governance canister changed and introduced this dependency on the ICP ledger at that stage, or
  • the issue was always there, but it’s only now becoming apparent — possibly because the canister has potentially become more verbose.

One way or another, something changed and I’m just trying to figure out what.

Or … maybe the state was just clean when I last tried, because I’m not encountering any errors anymore. :upside_down_face:

Nope, still happens. Lovely race condition.

I created a PR to install the NNS Governance and CMC canisters after everything else. This seems to resolve the earlier race condition, specifically, the need for the ICP Ledger to be present before installing the NNS Governance canister.

Nevertheless, I’m now facing another race condition with the latest version of the Governance canister, as it also appears to require the CMC to be available as well now? I’ve started a new thread for that issue:

I don’t think these dependencies are new. What is probably happening is that they are happening earlier, due to some refactoring. FWIW, the way that Governance does background work has changed pretty significantly recently.