Http Outgoing calls throwing No Consensus Reached

What can be the reasons for this error other then Transform function? What I know is only one that is transform function, in which we need to fix our responses so that all replicas have same res for consensus. In my knowledge i did that. What else i can do to avoid this error?
Am i missing anything?

PS: What if i send empty body and headers to transform function for a simple outgoing call ? Would that call reach consensus?

I don’t know any other sources of No Consensus Reached other than the transform function being a problem. A common cause for such problems is when the requests don’t arrive at the exact same time (e.g. an exchange producing a different price for the timestamps 12:54:34.01 and 12:54:34.03).

To debug, I’d start with a super obviously not-wrong transform function, e.g. it just returns "test". Then very slowly add more parts to the response until you can be sure what exactly is the problem.

I actually tried that too. Sent you complete request over PM please check if you can help seeing that.

Summary of the DM conversation for other people that have the same problem:

Exact error message is:

Call was rejected:
Request ID: 51984767509836d8bf040b9df8b2be4707fb50eba181c52b61011e4573d5fc91
Reject code: 4
Reject text: Canister http responses were different across replicas, and no consensus was reached

Problem was/is that the subnet does not contain the breaking change yet. How to verify:

  • Figure out which subnet your canister lives on
    • Search for your canister ID on the dashboard
    • It will show you which subnet the canister lives on
  • Check the latest version change for this subnet
    • Search through the list of proposals using this search
  • Compare with releases if this version contains the breaking change already
    • Go to the latest blessed releases
    • Search for the version you identified above.
    • If it has been elected earlier than 2022-11-07, 16:03:58 UTC, then it doesn’t contain the change yet
1 Like