Skip to content

Commit

Permalink
Patch IAVL + fast export
Browse files Browse the repository at this point in the history
  • Loading branch information
Reecepbcups committed May 21, 2023
1 parent 9abd946 commit 3544e13
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
2 changes: 1 addition & 1 deletion store/iavl/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ func UnsafeNewStore(tree *iavl.MutableTree) *Store {
// Any mutable operations executed will result in a panic.
func (st *Store) GetImmutable(version int64) (*Store, error) {
if !st.VersionExists(version) {
return &Store{tree: &immutableTree{&iavl.ImmutableTree{}}}, fmt.Errorf("version mismatch on immutable IAVL tree; version does not exist. Version has either been pruned, or is for a future block height")
return &Store{tree: &immutableTree{&iavl.ImmutableTree{}}}, nil
}

iTree, err := st.tree.GetImmutable(version)
Expand Down
13 changes: 12 additions & 1 deletion types/module/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,8 +344,19 @@ func (m *Manager) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, genesisData
// ExportGenesis performs export genesis functionality for modules
func (m *Manager) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) map[string]json.RawMessage {
genesisData := make(map[string]json.RawMessage)
var channels []chan json.RawMessage

for _, moduleName := range m.OrderExportGenesis {
genesisData[moduleName] = m.Modules[moduleName].ExportGenesis(ctx, cdc)
channels = append(channels, make(chan json.RawMessage))

go func(moduleName string, cdc codec.JSONCodec, ch chan json.RawMessage) {
ch <- m.Modules[moduleName].ExportGenesis(ctx, cdc)
close(ch)
}(moduleName, cdc, channels[len(channels)-1])
}

for i, moduleName := range m.OrderExportGenesis {
genesisData[moduleName] = <-channels[i]
}

return genesisData
Expand Down

0 comments on commit 3544e13

Please sign in to comment.