fix(server): allow align block header with skip check header in grpc server (#23244)
This commit is contained in:
parent
f4996166e5
commit
4426a9792b
@ -56,6 +56,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
|
||||
* (x/auth/tx) [#23170](https://github.com/cosmos/cosmos-sdk/pull/23170) Avoid panic from newWrapperFromDecodedTx when AuthInfo.Fee is optional in decodedTx.
|
||||
* (x/auth/tx) [23144](https://github.com/cosmos/cosmos-sdk/pull/23144) Add missing CacheWithValue for ExtensionOptions.
|
||||
* (x/auth/tx) [#23148](https://github.com/cosmos/cosmos-sdk/pull/23148) Avoid panic from intoAnyV2 when v1.PublicKey is optional.
|
||||
* (server) [#23244](https://github.com/cosmos/cosmos-sdk/pull/23244) Allow align block header with skip check header in grpc server.
|
||||
|
||||
### Deprecated
|
||||
|
||||
|
||||
@ -23,6 +23,12 @@ import (
|
||||
|
||||
// RegisterGRPCServer registers gRPC services directly with the gRPC server.
|
||||
func (app *BaseApp) RegisterGRPCServer(server gogogrpc.Server) {
|
||||
app.RegisterGRPCServerWithSkipCheckHeader(server, false)
|
||||
}
|
||||
|
||||
// RegisterGRPCServerWithSkipCheckHeader registers gRPC services with the specified gRPC server
|
||||
// and bypass check header flag.
|
||||
func (app *BaseApp) RegisterGRPCServerWithSkipCheckHeader(server gogogrpc.Server, skipCheckHeader bool) {
|
||||
// Define an interceptor for all gRPC queries: this interceptor will create
|
||||
// a new sdk.Context, and pass it into the query handler.
|
||||
interceptor := func(grpcCtx context.Context, req interface{}, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
|
||||
@ -48,7 +54,7 @@ func (app *BaseApp) RegisterGRPCServer(server gogogrpc.Server) {
|
||||
|
||||
// Create the sdk.Context. Passing false as 2nd arg, as we can't
|
||||
// actually support proofs with gRPC right now.
|
||||
sdkCtx, err := app.CreateQueryContext(height, false)
|
||||
sdkCtx, err := app.CreateQueryContextWithCheckHeader(height, false, !skipCheckHeader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -139,6 +139,9 @@ type GRPCConfig struct {
|
||||
// MaxSendMsgSize defines the max message size in bytes the server can send.
|
||||
// The default value is math.MaxInt32.
|
||||
MaxSendMsgSize int `mapstructure:"max-send-msg-size"`
|
||||
|
||||
// SkipCheckHeader defines if the gRPC server should bypass check header.
|
||||
SkipCheckHeader bool `mapstructure:"skip-check-header"`
|
||||
}
|
||||
|
||||
// StateSyncConfig defines the state sync snapshot configuration.
|
||||
@ -237,10 +240,11 @@ func DefaultConfig() *Config {
|
||||
RPCMaxBodyBytes: 1000000,
|
||||
},
|
||||
GRPC: GRPCConfig{
|
||||
Enable: true,
|
||||
Address: DefaultGRPCAddress,
|
||||
MaxRecvMsgSize: DefaultGRPCMaxRecvMsgSize,
|
||||
MaxSendMsgSize: DefaultGRPCMaxSendMsgSize,
|
||||
Enable: true,
|
||||
Address: DefaultGRPCAddress,
|
||||
MaxRecvMsgSize: DefaultGRPCMaxRecvMsgSize,
|
||||
MaxSendMsgSize: DefaultGRPCMaxSendMsgSize,
|
||||
SkipCheckHeader: false,
|
||||
},
|
||||
StateSync: StateSyncConfig{
|
||||
SnapshotInterval: 0,
|
||||
|
||||
@ -171,6 +171,9 @@ max-recv-msg-size = "{{ .GRPC.MaxRecvMsgSize }}"
|
||||
# The default value is math.MaxInt32.
|
||||
max-send-msg-size = "{{ .GRPC.MaxSendMsgSize }}"
|
||||
|
||||
# SkipCheckHeader defines if the gRPC server should bypass check header.
|
||||
skip-check-header = {{ .GRPC.SkipCheckHeader }}
|
||||
|
||||
###############################################################################
|
||||
### State Sync Configuration ###
|
||||
###############################################################################
|
||||
|
||||
@ -37,7 +37,7 @@ func NewGRPCServer(clientCtx client.Context, app types.Application, cfg config.G
|
||||
grpc.MaxRecvMsgSize(maxRecvMsgSize),
|
||||
)
|
||||
|
||||
app.RegisterGRPCServer(grpcSrv)
|
||||
app.RegisterGRPCServerWithSkipCheckHeader(grpcSrv, cfg.SkipCheckHeader)
|
||||
|
||||
// Reflection allows consumers to build dynamic clients that can write to any
|
||||
// Cosmos SDK application without relying on application packages at compile
|
||||
|
||||
@ -100,9 +100,10 @@ const (
|
||||
|
||||
// gRPC-related flags
|
||||
|
||||
flagGRPCOnly = "grpc-only"
|
||||
flagGRPCEnable = "grpc.enable"
|
||||
flagGRPCAddress = "grpc.address"
|
||||
flagGRPCOnly = "grpc-only"
|
||||
flagGRPCEnable = "grpc.enable"
|
||||
flagGRPCAddress = "grpc.address"
|
||||
flagGRPCSkipCheckHeader = "grpc.skip-check-header"
|
||||
|
||||
// mempool flags
|
||||
|
||||
@ -1028,6 +1029,7 @@ func addStartNodeFlags[T types.Application](cmd *cobra.Command, opts StartCmdOpt
|
||||
cmd.Flags().Bool(flagGRPCOnly, false, "Start the node in gRPC query only mode (no CometBFT process is started)")
|
||||
cmd.Flags().Bool(flagGRPCEnable, true, "Define if the gRPC server should be enabled")
|
||||
cmd.Flags().String(flagGRPCAddress, serverconfig.DefaultGRPCAddress, "the gRPC server address to listen on")
|
||||
cmd.Flags().Bool(flagGRPCSkipCheckHeader, false, "Define if the gRPC server should bypass check header")
|
||||
cmd.Flags().Uint64(FlagStateSyncSnapshotInterval, 0, "State sync snapshot interval")
|
||||
cmd.Flags().Uint32(FlagStateSyncSnapshotKeepRecent, 2, "State sync snapshot to keep")
|
||||
cmd.Flags().Bool(FlagDisableIAVLFastNode, false, "Disable fast node for IAVL tree")
|
||||
|
||||
@ -38,9 +38,9 @@ type (
|
||||
|
||||
RegisterAPIRoutes(*api.Server, config.APIConfig)
|
||||
|
||||
// RegisterGRPCServer registers gRPC services directly with the gRPC
|
||||
// server.
|
||||
RegisterGRPCServer(grpc.Server)
|
||||
// RegisterGRPCServerWithSkipCheckHeader registers gRPC services directly with the gRPC
|
||||
// server and bypass check header flag.
|
||||
RegisterGRPCServerWithSkipCheckHeader(grpc.Server, bool)
|
||||
|
||||
// RegisterTxService registers the gRPC Query service for tx (such as tx
|
||||
// simulation, fetching txs by hash...).
|
||||
|
||||
@ -169,6 +169,9 @@ max-recv-msg-size = "10485760"
|
||||
# The default value is math.MaxInt32.
|
||||
max-send-msg-size = "2147483647"
|
||||
|
||||
# SkipCheckHeader defines if the gRPC server should bypass check header.
|
||||
skip-check-header = false
|
||||
|
||||
###############################################################################
|
||||
### State Sync Configuration ###
|
||||
###############################################################################
|
||||
|
||||
Loading…
Reference in New Issue
Block a user