-
Notifications
You must be signed in to change notification settings - Fork 779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove 0 as a special case in gas/storage meters #6890
Conversation
376e944
to
4832380
Compare
Also, a limit of 0 when determining a nested call's metering limit would mean it was free to use all of the callee's resources. Now, a limit of 0 means that the nested call will have an empty storage meter.
In particular, this commit removes the usage of `0` as unlimited metering in the following tests: - `nonce` - `last_frame_output_works_on_instantiate` - `instantiation_from_contract` - `immutable_data_set_works_only_once` - `immutable_data_set_errors_with_empty_data` - `immutable_data_access_checks_work`
ed1f312
to
8e66f50
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The basic idea of the 63/64 rule looks correct to me but there are many failing tests. I left some nits.
This fixes, among other tests: * `tests::gas_consumed_is_linear_for_nested_calls` test * `tests::deposit_limit_in_nested_calls` * `tests::transient_storage_limit_in_call` * `tests::call_return_code` * `test::chain_extension_temp_storage_works` * `tests::origin_api_works` * `tests::read_only_call_works`
@xermicus the meters in |
Sorry if this wasn't clear: Only |
@athei Most of the previously failing tests were caused by the contract code of those tests using the now-removed '0 means "use all available gas"' semantic. After fixing this,
The contracts the above tests rely on have removed usages of 0 as "use all", so their failures are somewhere else. |
I don't get why the benchmarks are failing. |
@athei I can always run No significant code was added, only removed ( |
/cmd bench --pallet pallet_revive |
Command "bench --pallet pallet_revive" has started 🚀 See logs here |
Command "bench --pallet pallet_revive" has failed ❌! See logs here Command output:❌ Failed benchmarks of runtimes/pallets: |
Command "bench --pallet pallet_revive" has started 🚀 See logs here |
Command "bench --pallet pallet_revive" has finished ✅ See logs here Subweight results:
Command output:❌ Failed benchmarks of runtimes/pallets: |
No the execution of some benchmarks do fail (see failing CI). Which means this PR broke something there. Re-running them will fail for the same reason: Keep in mind that the benchmarks run with the actual (kitchensink) runtime while the test use the testing config. So this is why the tests can be successful while the benchmark CI job fails. So some debugging needed. |
The tests which is failing now uses a pre-compiled test fixture written in Solidity. We need to adapt revive to the new behavior and update the pre-compiled test fixtures. The one failing is @xermicus We need to change revive to pass u64::MAX and u256::MAX into delegate_call,call and instantiate for gas limits and storage deposit limits respectively. Once we have a new revive we can run |
All GitHub workflows were cancelled due to failure one of the required jobs. |
Signed-off-by: xermicus <[email protected]>
@rockbmb I pushed the updated fixtures directly to your branch. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@xermicus I think we are good to go here with this PR. Can you review?
Pull Request is not mergeable
* master: (33 commits) Implement `pallet-asset-rewards` (#3926) [pallet-revive] Add host function `to_account_id` (#7091) [pallet-revive] Remove revive events (#7164) [pallet-revive] Remove debug buffer (#7163) litep2p: Provide partial results to speedup GetRecord queries (#7099) [pallet-revive] Bump asset-hub westend spec version (#7176) Remove 0 as a special case in gas/storage meters (#6890) [pallet-revive] Fix `caller_is_root` return value (#7086) req-resp/litep2p: Reject inbound requests from banned peers (#7158) Add "run to block" tools (#7109) Fix reversed error message in DispatchInfo (#7170) approval-voting: Make importing of duplicate assignment idempotent (#6971) Parachains: Use relay chain slot for velocity measurement (#6825) PRDOC: Document `validate: false` (#7117) xcm: convert properly assets in xcmpayment apis (#7134) CI: Only format umbrella crate during umbrella check (#7139) approval-voting: Fix sending of assignments after restart (#6973) Retry approval on availability failure if the check is still needed (#6807) [pallet-revive-eth-rpc] persist eth transaction hash (#6836) litep2p: Sufix litep2p to the identify agent version for visibility (#7133) ...
Closes #6846 .