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

Fix gnosis preset issue #5081

Merged
merged 3 commits into from
Feb 1, 2023

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Jan 30, 2023

Motivation

Issue reported here https://discord.com/channels/593655374469660673/743858262864167062/1069661074556719175

In v1.4.0 it is not possible to use any preset other than mainnet and minimal because the dev.ts is always executed which checks for those and otherwise throws an error.

switch (ACTIVE_PRESET) {
case PresetName.mainnet:
chainConfig = mainnetChainConfig;
break;
case PresetName.minimal:
chainConfig = minimalChainConfig;
break;
default:
throw Error(`Preset ${ACTIVE_PRESET} not supported with dev command`);
}

Description

Use getters to load network data, this allows to add additional logic (as it is done for dev) and also only loads the network data into memory if it is actually used.

Add gnosis preset to dev command

@nflaig nflaig requested a review from a team as a code owner January 30, 2023 18:34
Use getters to load network data, this allows to add additional logic (as it is done for dev)
and also only loads the network data into memory if it is actually used.
@nflaig nflaig changed the title Use getters to load network data Fix loading presets other than mainnet and minimal Jan 30, 2023
twoeths
twoeths previously approved these changes Jan 31, 2023
Copy link
Contributor

@twoeths twoeths left a comment

Choose a reason for hiding this comment

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

looks good to me!

break;
case PresetName.minimal:
chainConfig = minimalChainConfig;
break;
Copy link
Member

Choose a reason for hiding this comment

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

Instead of adding a network specific getNetworkData, I think we can just add another case for PresetName.gnosis. (And perhaps remove the default case)

Copy link
Member

Choose a reason for hiding this comment

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

(We probably want to support any preset for the dev command anyways)

Copy link
Member Author

@nflaig nflaig Jan 31, 2023

Choose a reason for hiding this comment

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

The main reason for adding a function to get the network data is that we only want to execute this switch-case statement (or any other network specific code for that matter) if the network is dev. If we don't use a function this will always be executed which is unnecessary/unintuitive.

Copy link
Member Author

@nflaig nflaig Jan 31, 2023

Choose a reason for hiding this comment

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

I think we can just add another case for PresetName.gnosis

lets do this for now as it is less overall changes to get this fix out asap, I still think it is not a good that we execute code related to dev command if we run other commands such as beacon

Copy link
Member

Choose a reason for hiding this comment

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

Agree that its not great to be running this code, just looking for the smaller diff for quick fix.

Also looked into turning the network imports into an await import but that also is a big change since getNetworkData and some downstream consumers are all sync functions

Copy link
Member Author

Choose a reason for hiding this comment

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

Also looked into turning the network imports into an await import

yeah that was also the initial solution I wanted to use until I figured that the downstream call chain just never ends and had like 30+ changes, I still have most of those changes stashed if we want to apply this solution later

@philknows philknows added this to the v1.4.1 milestone Jan 31, 2023
@nflaig nflaig changed the title Fix loading presets other than mainnet and minimal Fix running lodestar on gnosis Jan 31, 2023
@nflaig nflaig changed the title Fix running lodestar on gnosis Fix gnosis preset issue Jan 31, 2023
@wemeetagain wemeetagain merged commit 3d696f6 into ChainSafe:unstable Feb 1, 2023
wemeetagain pushed a commit that referenced this pull request Feb 1, 2023
* Fix loading presets other than mainnet and minimal

Use getters to load network data, this allows to add additional logic (as it is done for dev)
and also only loads the network data into memory if it is actually used.

* Revert "Fix loading presets other than mainnet and minimal"

This reverts commit dbd6583.

* Add gnosis preset to dev command
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.6.0 🎉

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