-
Notifications
You must be signed in to change notification settings - Fork 11.3k
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
Add new object_per_epoch_marker_table
that includes consensus start versions
#20822
base: main
Are you sure you want to change the base?
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
3 Skipped Deployments
|
5c81509
to
af1187c
Compare
af1187c
to
2c62066
Compare
2c62066
to
58cb35e
Compare
… versions This introduces the concept of a "FullObjectID" and "FullObjectKey", which for consensus objects includes the initial shared version/start version. Migrates to these new types across the codebase where relevant.
58cb35e
to
4161327
Compare
@@ -303,6 +307,8 @@ pub trait ObjectCacheRead: Send + Sync { | |||
input_key | |||
); | |||
// If the key exists at the specified version, then the object is available. | |||
// TODO-DNS does this need to be inverted to check markers first, so that it doesn't incorrectly load |
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.
DNS comment
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.
and i think the answer is yes, clearly
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.
noting for posterity per offline discussion - this function is correct as-is, and when implementing execution logic for consensusv2 we'll need to add code to check after the object is loaded that the object owner is what we expect based on tx input args
@@ -43,6 +43,7 @@ pub struct TemporaryStore<'backing> { | |||
store: &'backing dyn BackingStore, | |||
tx_digest: TransactionDigest, | |||
input_objects: BTreeMap<ObjectID, Object>, | |||
deleted_consensus_objects: BTreeMap<ObjectID, SequenceNumber>, |
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.
why do older execution versions need this new code? they don't appear to use it
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.
they use it to construct the InnerTemporaryStore
which is not part of the versioned sui-execution
crate
version, | ||
self.current_epoch_id, | ||
self.protocol_config | ||
.use_object_per_epoch_marker_table_v2_as_option() |
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.
nit: isn't there a getter without the option that would just return false?
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.
I don't think so? from the macro:
let getter = quote! {
// Derive the getter
pub fn #field_name(&self) -> #inner_type {
self.#field_name.expect(Self::CONSTANT_ERR_MSG)
}
pub fn #as_option_name(&self) -> #field_type {
self.#field_name
}
};
This introduces the concept of a "FullObjectID" and "FullObjectKey", which for consensus objects includes the initial shared version/start version.
Migrates to these new types across the codebase where relevant.
Release notes
Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.
For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.