Skip to content
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

Reset cache if version becomes active #4791

Merged

Conversation

Leo-Besancon
Copy link
Collaborator

  • document all added functions
  • try in sandbox /simulation/labnet
    • if part of node-launch, checked using the resync_check flag
  • unit tests on the added/changed features
    • make tests compile
    • make tests pass
  • add logs allowing easy debugging in case the changes caused problems
  • if the API has changed, update the API specification

@Leo-Besancon Leo-Besancon requested a review from modship December 17, 2024 08:58
massa-execution-worker/src/execution.rs Outdated Show resolved Hide resolved
@@ -36,7 +36,7 @@ macro_rules! metadata_key {

pub(crate) struct HDCache {
/// RocksDB database
db: DB,
db: Option<DB>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why it is now Option ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to destroy the DB to reset it, I needed a way to drop the current DB, which is not possible without the Option as I can't fully drop the HDCache.
The only alternative I thought was to iterate through the DB to remove elements, but this may be a heavy operation.

Copy link
Member

@damip damip Dec 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the only other solution I see (without using Option) is

        unsafe {
            std::ptr::drop_in_place(&mut self.db);
            std::ptr::write(&mut self.db, create_new_db());
        }

but not great because unsafe

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maye we can use the unsafe snippet here but check with Miri first if the code looks ok and sound?
If you want I can have a look at it?

massa-module-cache/src/hd_cache.rs Show resolved Hide resolved
@Leo-Besancon Leo-Besancon marked this pull request as ready for review December 19, 2024 12:29
@Leo-Besancon Leo-Besancon requested review from sydhds and damip December 19, 2024 12:29
massa-execution-worker/src/execution.rs Outdated Show resolved Hide resolved
massa-execution-worker/src/execution.rs Show resolved Hide resolved
@@ -36,7 +36,7 @@ macro_rules! metadata_key {

pub(crate) struct HDCache {
/// RocksDB database
db: DB,
db: Option<DB>,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maye we can use the unsafe snippet here but check with Miri first if the code looks ok and sound?
If you want I can have a look at it?

@Leo-Besancon Leo-Besancon force-pushed the reset_module_cache_on_version_active branch from 20bc306 to 1b5868b Compare December 19, 2024 15:21
@Leo-Besancon Leo-Besancon force-pushed the reset_module_cache_on_version_active branch from 1b5868b to b1c8da3 Compare December 19, 2024 16:26
@Leo-Besancon Leo-Besancon merged commit 39698eb into mainnet_2_3_versioning_mip Dec 30, 2024
12 checks passed
@bilboquet bilboquet deleted the reset_module_cache_on_version_active branch January 22, 2025 13:19
Leo-Besancon added a commit that referenced this pull request Jan 23, 2025
* Asc message execution - requery message bytecode after each message execution (#4710)

* Requery bytecode

* cargo fmt

* Create MIP "MIP-0001-ASC-BugFix"

* Add versioning to asc execution context

* Asc message execution - requery message bytecode after each message execution (#4710)

* Requery bytecode

* cargo fmt

* Improve versioning

* fmt

* Update ci.yml

* Add ledger changes versioning

* Add runtime module versioning

* Add send_message versioning

* Add address category versioning

* Add Fix eliminated msg versioning

* add versioning test-exports mip

* fmt

* Add ledger delete_entry versioning

* Add versioning for Consistent expiry period

* Update speculative_async_pool.rs

* Add versioning to fees fix

* Add versioning for Fix amount remaining to slash 2

* Add versioning for LedgerChanges::Delete

* cargo fmt + check pass

* Add Condom Middleware versioning

* fmt

* Add versioning to max_recursive_calls_depth

* Fix deadlock

* Add versioning to Fix potential ledger keys boundaries issue

* Add versioning to gas costs

* Add versioning to Add additional verification for v & s value in evm_signature_verify

* Update runtime dep

* Add comment relative to versioning of Update executed denunciations in StateChanges.apply method

* Add versioning to Limit event msg size & event number per operation

* Fix versioning for interface implementation tests

* Fix test for max_event size

* Add versioning to Early set operation id

* Review comment: propagate error message and better match

* Review comment: clean out match

* Review comment: Add helper function to query versioned condom_limits in context

* Add comment

* Add dummy info for MIP_info

* Change .unwrap() to .expect() for get_block_timestamp

* Disable deferred calls abi if exec_comp = 0

* deferred calls const gas cost

* Add versioning for fix async message updates and add unit test

* Api : deferred call endpoint versioning

* Metrics: add network version metrics

* fix empty help msg

* Rollback deferred calls abi bail

* update runtime

* Allow transfers to SC addresses (#4789)

* Allow transfers to SC

* Add unit test for 4 scenarios

* Add versioning to Allow transfers to SC addresses

* Use coherent PublicKeyFormat in parse_slice (#4783)

* Fix incorrect address hashing + add TU for evm_get_address_from_pubkey (#4785)

* Add versioning to Use coherent PublicKeyFormat in parse_slice

* Add versioning for Fix incorrect address hashing

* cargo fmt + check

* Add versioning to massa event cache

* Fix versioning of massa event cache

* Reset cache if version becomes active (#4791)

* Reset cache if version becomes active

* add &mut + cargo fmt

* Update massa-execution-worker/src/execution.rs

Co-authored-by: Modship <[email protected]>

* Update execution.rs

* Update hd_cache.rs

* Avoid taking a lock

* Rename + add info!() on cache reset

---------

Co-authored-by: Modship <[email protected]>

* In HD DB reset(), Do not panic if fails to destroy HD cache

* Fix async message execution order in slot with no active version (#4799)

* Update the order of execution of async msg in  slot

* Remove debug print

* current_mip_version to get_status (#4803)

* Fix versioned TU

* metrics block version (#4832)

* add metric for current_active_version

* Metrics : remove counter for version 0 when current ver > 0

---------

Co-authored-by: modship <[email protected]>
Co-authored-by: Sydhds <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants