Skip to content

Commit

Permalink
add back is_genesis to trait StateView
Browse files Browse the repository at this point in the history
  • Loading branch information
simonjiao committed Oct 14, 2024
1 parent baefcc9 commit af38fbb
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 8 deletions.
4 changes: 4 additions & 0 deletions network-rpc/api/src/remote_chain_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,8 @@ impl TStateView for RemoteChainStateReader {
fn get_usage(&self) -> Result<StateStorageUsage, StateviewError> {
unimplemented!()
}

fn is_genesis(&self) -> bool {
false
}
}
5 changes: 5 additions & 0 deletions rpc/client/src/remote_state_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use starcoin_types::account_state::AccountState;
use starcoin_types::block::BlockNumber;
use starcoin_types::state_set::{AccountStateSet, ChainStateSet};
use starcoin_vm_types::state_store::state_key::StateKey;
use starcoin_vm_types::state_store::state_storage_usage::StateStorageUsage;
use starcoin_vm_types::state_store::state_value::StateValue;
use starcoin_vm_types::state_store::table::{TableHandle, TableInfo};
use starcoin_vm_types::state_store::TStateView;
Expand Down Expand Up @@ -138,6 +139,10 @@ impl<'a> TStateView for RemoteStateReader<'a> {
}
}

fn get_usage(&self) -> starcoin_vm_types::state_store::Result<StateStorageUsage> {
unimplemented!("RemoteStateReader get_usage not implemented")
}

fn is_genesis(&self) -> bool {
false
}
Expand Down
5 changes: 5 additions & 0 deletions state/service/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use starcoin_types::{
state_set::ChainStateSet,
};
use starcoin_vm_types::state_store::state_key::StateKey;
use starcoin_vm_types::state_store::state_storage_usage::StateStorageUsage;
use starcoin_vm_types::state_store::state_value::StateValue;
use starcoin_vm_types::state_store::table::{TableHandle, TableInfo};
use starcoin_vm_types::state_store::TStateView;
Expand Down Expand Up @@ -259,6 +260,10 @@ impl TStateView for Inner {
self.state_db.get_state_value(state_key)
}

fn get_usage(&self) -> starcoin_vm_types::state_store::Result<StateStorageUsage> {
unimplemented!("get_usage not implemented for ChainStateService")
}

fn is_genesis(&self) -> bool {
false
}
Expand Down
6 changes: 5 additions & 1 deletion state/statedb/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ use starcoin_vm_types::state_store::state_key::inner::StateKeyInner;
use starcoin_vm_types::state_store::state_storage_usage::StateStorageUsage;
use starcoin_vm_types::state_store::state_value::StateValue;
use starcoin_vm_types::state_store::table::TableInfo;
use starcoin_vm_types::state_store::TStateView;
use starcoin_vm_types::state_store::{state_key::StateKey, table::TableHandle};
use starcoin_vm_types::state_store::{StateView, TStateView};
use std::collections::HashSet;
use std::convert::TryInto;
use std::sync::Arc;
Expand Down Expand Up @@ -441,6 +441,10 @@ impl TStateView for ChainStateDB {
fn get_usage(&self) -> starcoin_vm_types::state_store::Result<StateStorageUsage> {
unimplemented!()
}

fn is_genesis(&self) -> bool {
self.state_tree.is_genesis()
}
}

impl ChainStateReader for ChainStateDB {
Expand Down
5 changes: 5 additions & 0 deletions vm/e2e-tests/src/data_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ use starcoin_vm_types::{
use starcoin_crypto::HashValue;
use starcoin_statedb::ChainStateWriter;
use starcoin_types::state_set::ChainStateSet;
use starcoin_vm_types::state_store::state_storage_usage::StateStorageUsage;
use starcoin_vm_types::state_store::state_value::StateValue;
use starcoin_vm_types::state_store::TStateView;
use std::collections::HashMap;
Expand Down Expand Up @@ -109,6 +110,10 @@ impl TStateView for FakeDataStore {
.map(|v| StateValue::new(v)))
}

fn get_usage(&self) -> starcoin_vm_types::state_store::Result<StateStorageUsage> {
unimplemented!("get_usage not implemented for FakeDataStore")
}

fn is_genesis(&self) -> bool {
self.inner().is_empty()
}
Expand Down
4 changes: 4 additions & 0 deletions vm/resource-viewer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -327,4 +327,8 @@ impl TStateView for NullStateView {
fn get_usage(&self) -> starcoin_vm_types::state_store::Result<StateStorageUsage> {
unimplemented!("get_usage not implemented for NullStateView")
}

fn is_genesis(&self) -> bool {
false
}
}
4 changes: 4 additions & 0 deletions vm/types/src/state_store/in_memory_state_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ impl TStateView for InMemoryStateView {
fn as_in_memory_state_view(&self) -> InMemoryStateView {
self.clone()
}

fn is_genesis(&self) -> bool {
unimplemented!("function is_genesis not implemented for InMemoryStateView")
}
}
8 changes: 8 additions & 0 deletions vm/types/src/state_store/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ pub trait TStateView {
fn as_in_memory_state_view(&self) -> InMemoryStateView {
unreachable!("in-memory state view conversion not supported yet")
}

//todo: remove me after refactor
/// Check if current state view is genesis state view.
fn is_genesis(&self) -> bool;
}

pub trait StateView: TStateView<Key = StateKey> {}
Expand Down Expand Up @@ -85,6 +89,10 @@ where
fn get_usage(&self) -> Result<StateStorageUsage> {
self.deref().get_usage()
}

fn is_genesis(&self) -> bool {
self.deref().is_genesis()
}
}

pub type ShardedStateUpdates = [HashMap<StateKey, Option<StateValue>>; 16];
Expand Down
4 changes: 4 additions & 0 deletions vm/vm-runtime/src/data_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ impl<'block, S: TStateView> TStateView for StateViewCache<'block, S> {
fn get_usage(&self) -> Result<StateStorageUsage, StateviewError> {
todo!()
}

fn is_genesis(&self) -> bool {
self.data_view.is_genesis()
}
}

impl<'block, S: StateView> ModuleResolver for StateViewCache<'block, S> {
Expand Down
12 changes: 9 additions & 3 deletions vm/vm-runtime/src/parallel_executor/storage_wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,21 @@ impl<'a, S: TStateView> TStateView for VersionedView<'a, S> {
// Get some data either through the cache or the `StateView` on a cache miss.
fn get_state_value(&self, state_key: &StateKey) -> Result<Option<StateValue>, StateviewError> {
match self.hashmap_view.read(state_key) {
// todo: handle WriteOp proplerly
Some(v) => Ok(match v.as_ref() {
WriteOp::Value(w) => Some(w.clone().map(|v| StateValue::from(v))),
WriteOp::Deletion => None,
WriteOp::Creation { data, metadata: _ } => Some(data.clone().map(From::from)),
WriteOp::Modification { data, metadata: _ } => Some(data.clone().map(From::from)),
WriteOp::Deletion { metadata: _ } => None,
}),
None => self.base_view.get_state_value(state_key),
}
}

fn get_usage(&self) -> Result<StateStorageUsage, StateviewError> {
todo!()
unimplemented!("get_usage not implemented for VersionedView")
}

fn is_genesis(&self) -> bool {
self.base_view.is_genesis()
}
}
5 changes: 1 addition & 4 deletions vm/vm-runtime/src/starcoin_vm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crate::vm_adapter::{
discard_error_output, discard_error_vm_status, PreprocessedTransaction,
PublishModuleBundleOption, SessionAdapter, VMAdapter,
};
use anyhow::{bail, format_err, Error, Result};
use anyhow::{bail, Error, Result};
use move_core_types::gas_algebra::{InternalGasPerByte, NumBytes};
use move_core_types::move_resource::MoveStructType;
use move_core_types::vm_status::StatusCode::VALUE_SERIALIZATION_ERROR;
Expand All @@ -30,9 +30,6 @@ use starcoin_gas_schedule::{
};
use starcoin_logger::prelude::*;
use starcoin_types::account_config::config_change::ConfigChangeEvent;
use starcoin_types::account_config::{
access_path_for_module_upgrade_strategy, access_path_for_two_phase_upgrade_v2,
};
use starcoin_types::{
account_config,
block_metadata::BlockMetadata,
Expand Down

0 comments on commit af38fbb

Please sign in to comment.