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

Create a multi-versioned execution pipeline #314

Closed
jsign opened this issue Sep 30, 2022 · 1 comment
Closed

Create a multi-versioned execution pipeline #314

jsign opened this issue Sep 30, 2022 · 1 comment
Labels
enhancement New feature or request

Comments

@jsign
Copy link
Contributor

jsign commented Sep 30, 2022

This is a big one that probably deserves a project.

Our current execution pipeline isn't multi-versioned, meaning that any new feature or code change would affect historic events that happened in the network. This is fine now since we're just starting with the protocol definition.

At some point, we should start including new functionality in the protocol spec that actives at a particular block number in each chain. If we don't do this, by creating new features we would be "rewriting history" and potentially changing the table state for users that shouldn't expect that to be happening.

To do this, we need to do some refactor of the execution pipeline to have multiple versioned Executor (and downstream) "packaged" that are "plugged"/"switched" depending on the block number we're in. At activation times, this also might require adding a functionality to run migrations in the database.

For example, if we announce that at block X in Mumbai the Tableland will have a database migration in all tables defined by some rule in the spec, we need to support that in the validator. Another example is mentioning that a new SQL statement will be supported starting at block X in Goerli (and not before, if you cold sync a validator).

Hopefully, this makes sense, but let me know if the idea isn't clear. Of course, we need to dedicate time to design and scope the work to do since this will take some work.

@jsign jsign added the enhancement New feature or request label Sep 30, 2022
@jsign jsign moved this to 🆕 New in go-tableland backlog Sep 30, 2022
@jsign
Copy link
Contributor Author

jsign commented Oct 28, 2022

This work has been moved to a project, see #368

@jsign jsign closed this as completed Oct 28, 2022
Repository owner moved this from 🆕 New to ✅ Done in go-tableland backlog Oct 28, 2022
@jsign jsign moved this from ✅ Done to ⚫ Tombstoned in go-tableland backlog Oct 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
No open projects
Status: Tombstoned
Development

No branches or pull requests

1 participant