-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(server/v2): init the indexer in server/v2 (#22218)
Co-authored-by: Julien Robert <[email protected]> (cherry picked from commit e84c0eb) # Conflicts: # runtime/v2/app.go # runtime/v2/go.mod # schema/indexer/start.go # server/v2/cometbft/go.mod # server/v2/cometbft/go.sum # server/v2/cometbft/server.go # server/v2/config.go # server/v2/go.mod # server/v2/go.sum # server/v2/types.go # simapp/v2/go.mod # simapp/v2/go.sum
- Loading branch information
1 parent
39a726b
commit a41e8e1
Showing
15 changed files
with
1,176 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
package runtime | ||
|
||
import ( | ||
"encoding/json" | ||
|
||
runtimev2 "cosmossdk.io/api/cosmos/app/runtime/v2" | ||
appmodulev2 "cosmossdk.io/core/appmodule/v2" | ||
"cosmossdk.io/core/registry" | ||
"cosmossdk.io/core/transaction" | ||
"cosmossdk.io/log" | ||
"cosmossdk.io/schema/decoding" | ||
"cosmossdk.io/server/v2/appmanager" | ||
"cosmossdk.io/server/v2/stf" | ||
) | ||
|
||
// App is a wrapper around AppManager and ModuleManager that can be used in hybrid | ||
// app.go/app config scenarios or directly as a servertypes.Application instance. | ||
// To get an instance of *App, *AppBuilder must be requested as a dependency | ||
// in a container which declares the runtime module and the AppBuilder.Build() | ||
// method must be called. | ||
// | ||
// App can be used to create a hybrid app.go setup where some configuration is | ||
// done declaratively with an app config and the rest of it is done the old way. | ||
// See simapp/app_v2.go for an example of this setup. | ||
type App[T transaction.Tx] struct { | ||
*appmanager.AppManager[T] | ||
|
||
// app manager dependencies | ||
stf *stf.STF[T] | ||
msgRouterBuilder *stf.MsgRouterBuilder | ||
queryRouterBuilder *stf.MsgRouterBuilder | ||
db Store | ||
|
||
// app configuration | ||
logger log.Logger | ||
config *runtimev2.Module | ||
|
||
interfaceRegistrar registry.InterfaceRegistrar | ||
amino registry.AminoRegistrar | ||
moduleManager *MM[T] | ||
|
||
// QueryHandlers defines the query handlers | ||
QueryHandlers map[string]appmodulev2.Handler | ||
|
||
storeLoader StoreLoader | ||
} | ||
|
||
// Name returns the app name. | ||
func (a *App[T]) Name() string { | ||
return a.config.AppName | ||
} | ||
|
||
// Logger returns the app logger. | ||
func (a *App[T]) Logger() log.Logger { | ||
return a.logger | ||
} | ||
|
||
// ModuleManager returns the module manager. | ||
func (a *App[T]) ModuleManager() *MM[T] { | ||
return a.moduleManager | ||
} | ||
|
||
// DefaultGenesis returns a default genesis from the registered modules. | ||
func (a *App[T]) DefaultGenesis() map[string]json.RawMessage { | ||
return a.moduleManager.DefaultGenesis() | ||
} | ||
|
||
// SetStoreLoader sets the store loader. | ||
func (a *App[T]) SetStoreLoader(loader StoreLoader) { | ||
a.storeLoader = loader | ||
} | ||
|
||
// LoadLatest loads the latest version. | ||
func (a *App[T]) LoadLatest() error { | ||
return a.storeLoader(a.db) | ||
} | ||
|
||
// LoadHeight loads a particular height | ||
func (a *App[T]) LoadHeight(height uint64) error { | ||
return a.db.LoadVersion(height) | ||
} | ||
|
||
// LoadLatestHeight loads the latest height. | ||
func (a *App[T]) LoadLatestHeight() (uint64, error) { | ||
return a.db.GetLatestVersion() | ||
} | ||
|
||
// Close is called in start cmd to gracefully cleanup resources. | ||
func (a *App[T]) Close() error { | ||
return nil | ||
} | ||
|
||
func (a *App[T]) GetAppManager() *appmanager.AppManager[T] { | ||
return a.AppManager | ||
} | ||
|
||
func (a *App[T]) GetQueryHandlers() map[string]appmodulev2.Handler { | ||
return a.QueryHandlers | ||
} | ||
|
||
// GetSchemaDecoderResolver returns the module schema resolver. | ||
func (a *App[T]) GetSchemaDecoderResolver() decoding.DecoderResolver { | ||
moduleSet := map[string]any{} | ||
for moduleName, module := range a.moduleManager.Modules() { | ||
moduleSet[moduleName] = module | ||
} | ||
return decoding.ModuleSetDecoderResolver(moduleSet) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
module cosmossdk.io/runtime/v2 | ||
|
||
go 1.23 | ||
|
||
// server v2 integration | ||
replace ( | ||
cosmossdk.io/api => ../../api | ||
cosmossdk.io/server/v2/appmanager => ../../server/v2/appmanager | ||
cosmossdk.io/server/v2/stf => ../../server/v2/stf | ||
cosmossdk.io/store/v2 => ../../store/v2 | ||
cosmossdk.io/x/tx => ../../x/tx | ||
) | ||
|
||
require ( | ||
cosmossdk.io/api v0.7.6 | ||
cosmossdk.io/core v1.0.0-alpha.4 | ||
cosmossdk.io/depinject v1.0.0 | ||
cosmossdk.io/log v1.4.1 | ||
cosmossdk.io/schema v0.3.0 | ||
cosmossdk.io/server/v2/appmanager v0.0.0-00010101000000-000000000000 | ||
cosmossdk.io/server/v2/stf v0.0.0-00010101000000-000000000000 | ||
cosmossdk.io/store/v2 v2.0.0-00010101000000-000000000000 | ||
cosmossdk.io/x/tx v0.13.3 | ||
github.com/cosmos/gogoproto v1.7.0 | ||
google.golang.org/grpc v1.67.1 | ||
google.golang.org/protobuf v1.35.1 | ||
) | ||
|
||
require ( | ||
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2 // indirect | ||
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 // indirect | ||
cosmossdk.io/core/testing v0.0.0-20240923163230-04da382a9f29 // indirect | ||
cosmossdk.io/errors/v2 v2.0.0-20240731132947-df72853b3ca5 // indirect | ||
github.com/DataDog/zstd v1.5.5 // indirect | ||
github.com/beorn7/perks v1.0.1 // indirect | ||
github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||
github.com/cockroachdb/errors v1.11.1 // indirect | ||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect | ||
github.com/cockroachdb/pebble v1.1.0 // indirect | ||
github.com/cockroachdb/redact v1.1.5 // indirect | ||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect | ||
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect | ||
github.com/cosmos/iavl v1.3.0 // indirect | ||
github.com/cosmos/ics23/go v0.11.0 // indirect | ||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect | ||
github.com/emicklei/dot v1.6.2 // indirect | ||
github.com/getsentry/sentry-go v0.27.0 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang/snappy v0.0.4 // indirect | ||
github.com/google/btree v1.1.2 // indirect | ||
github.com/google/go-cmp v0.6.0 // indirect | ||
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect | ||
github.com/hashicorp/go-metrics v0.5.3 // indirect | ||
github.com/hashicorp/golang-lru v1.0.2 // indirect | ||
github.com/klauspost/compress v1.17.9 // indirect | ||
github.com/kr/pretty v0.3.1 // indirect | ||
github.com/kr/text v0.2.0 // indirect | ||
github.com/linxGnu/grocksdb v1.9.3 // indirect | ||
github.com/mattn/go-colorable v0.1.13 // indirect | ||
github.com/mattn/go-isatty v0.0.20 // indirect | ||
github.com/mattn/go-sqlite3 v1.14.22 // indirect | ||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||
github.com/onsi/gomega v1.28.1 // indirect | ||
github.com/pkg/errors v0.9.1 // indirect | ||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||
github.com/prometheus/client_golang v1.20.4 // indirect | ||
github.com/prometheus/client_model v0.6.1 // indirect | ||
github.com/prometheus/common v0.60.0 // indirect | ||
github.com/prometheus/procfs v0.15.1 // indirect | ||
github.com/rogpeppe/go-internal v1.12.0 // indirect | ||
github.com/rs/zerolog v1.33.0 // indirect | ||
github.com/spf13/cast v1.7.0 // indirect | ||
github.com/stretchr/testify v1.9.0 // indirect | ||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect | ||
github.com/tendermint/go-amino v0.16.0 // indirect | ||
github.com/tidwall/btree v1.7.0 // indirect | ||
golang.org/x/crypto v0.28.0 // indirect | ||
golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect | ||
golang.org/x/net v0.29.0 // indirect | ||
golang.org/x/sync v0.8.0 // indirect | ||
golang.org/x/sys v0.26.0 // indirect | ||
golang.org/x/text v0.19.0 // indirect | ||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect | ||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect | ||
gopkg.in/yaml.v3 v3.0.1 // indirect | ||
sigs.k8s.io/yaml v1.4.0 // indirect | ||
) |
Oops, something went wrong.