Skip to content

Commit 4426a97

Browse files
authored
fix(server): allow align block header with skip check header in grpc server (#23244)
1 parent f499616 commit 4426a97

File tree

8 files changed

+31
-12
lines changed

8 files changed

+31
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
5656
* (x/auth/tx) [#23170](https://github.com/cosmos/cosmos-sdk/pull/23170) Avoid panic from newWrapperFromDecodedTx when AuthInfo.Fee is optional in decodedTx.
5757
* (x/auth/tx) [23144](https://github.com/cosmos/cosmos-sdk/pull/23144) Add missing CacheWithValue for ExtensionOptions.
5858
* (x/auth/tx) [#23148](https://github.com/cosmos/cosmos-sdk/pull/23148) Avoid panic from intoAnyV2 when v1.PublicKey is optional.
59+
* (server) [#23244](https://github.com/cosmos/cosmos-sdk/pull/23244) Allow align block header with skip check header in grpc server.
5960

6061
### Deprecated
6162

baseapp/grpcserver.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ import (
2323

2424
// RegisterGRPCServer registers gRPC services directly with the gRPC server.
2525
func (app *BaseApp) RegisterGRPCServer(server gogogrpc.Server) {
26+
app.RegisterGRPCServerWithSkipCheckHeader(server, false)
27+
}
28+
29+
// RegisterGRPCServerWithSkipCheckHeader registers gRPC services with the specified gRPC server
30+
// and bypass check header flag.
31+
func (app *BaseApp) RegisterGRPCServerWithSkipCheckHeader(server gogogrpc.Server, skipCheckHeader bool) {
2632
// Define an interceptor for all gRPC queries: this interceptor will create
2733
// a new sdk.Context, and pass it into the query handler.
2834
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) {
4854

4955
// Create the sdk.Context. Passing false as 2nd arg, as we can't
5056
// actually support proofs with gRPC right now.
51-
sdkCtx, err := app.CreateQueryContext(height, false)
57+
sdkCtx, err := app.CreateQueryContextWithCheckHeader(height, false, !skipCheckHeader)
5258
if err != nil {
5359
return nil, err
5460
}

server/config/config.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ type GRPCConfig struct {
139139
// MaxSendMsgSize defines the max message size in bytes the server can send.
140140
// The default value is math.MaxInt32.
141141
MaxSendMsgSize int `mapstructure:"max-send-msg-size"`
142+
143+
// SkipCheckHeader defines if the gRPC server should bypass check header.
144+
SkipCheckHeader bool `mapstructure:"skip-check-header"`
142145
}
143146

144147
// StateSyncConfig defines the state sync snapshot configuration.
@@ -237,10 +240,11 @@ func DefaultConfig() *Config {
237240
RPCMaxBodyBytes: 1000000,
238241
},
239242
GRPC: GRPCConfig{
240-
Enable: true,
241-
Address: DefaultGRPCAddress,
242-
MaxRecvMsgSize: DefaultGRPCMaxRecvMsgSize,
243-
MaxSendMsgSize: DefaultGRPCMaxSendMsgSize,
243+
Enable: true,
244+
Address: DefaultGRPCAddress,
245+
MaxRecvMsgSize: DefaultGRPCMaxRecvMsgSize,
246+
MaxSendMsgSize: DefaultGRPCMaxSendMsgSize,
247+
SkipCheckHeader: false,
244248
},
245249
StateSync: StateSyncConfig{
246250
SnapshotInterval: 0,

server/config/config.toml.tpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ max-recv-msg-size = "{{ .GRPC.MaxRecvMsgSize }}"
171171
# The default value is math.MaxInt32.
172172
max-send-msg-size = "{{ .GRPC.MaxSendMsgSize }}"
173173

174+
# SkipCheckHeader defines if the gRPC server should bypass check header.
175+
skip-check-header = {{ .GRPC.SkipCheckHeader }}
176+
174177
###############################################################################
175178
### State Sync Configuration ###
176179
###############################################################################

server/grpc/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func NewGRPCServer(clientCtx client.Context, app types.Application, cfg config.G
3737
grpc.MaxRecvMsgSize(maxRecvMsgSize),
3838
)
3939

40-
app.RegisterGRPCServer(grpcSrv)
40+
app.RegisterGRPCServerWithSkipCheckHeader(grpcSrv, cfg.SkipCheckHeader)
4141

4242
// Reflection allows consumers to build dynamic clients that can write to any
4343
// Cosmos SDK application without relying on application packages at compile

server/start.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ const (
100100

101101
// gRPC-related flags
102102

103-
flagGRPCOnly = "grpc-only"
104-
flagGRPCEnable = "grpc.enable"
105-
flagGRPCAddress = "grpc.address"
103+
flagGRPCOnly = "grpc-only"
104+
flagGRPCEnable = "grpc.enable"
105+
flagGRPCAddress = "grpc.address"
106+
flagGRPCSkipCheckHeader = "grpc.skip-check-header"
106107

107108
// mempool flags
108109

@@ -1028,6 +1029,7 @@ func addStartNodeFlags[T types.Application](cmd *cobra.Command, opts StartCmdOpt
10281029
cmd.Flags().Bool(flagGRPCOnly, false, "Start the node in gRPC query only mode (no CometBFT process is started)")
10291030
cmd.Flags().Bool(flagGRPCEnable, true, "Define if the gRPC server should be enabled")
10301031
cmd.Flags().String(flagGRPCAddress, serverconfig.DefaultGRPCAddress, "the gRPC server address to listen on")
1032+
cmd.Flags().Bool(flagGRPCSkipCheckHeader, false, "Define if the gRPC server should bypass check header")
10311033
cmd.Flags().Uint64(FlagStateSyncSnapshotInterval, 0, "State sync snapshot interval")
10321034
cmd.Flags().Uint32(FlagStateSyncSnapshotKeepRecent, 2, "State sync snapshot to keep")
10331035
cmd.Flags().Bool(FlagDisableIAVLFastNode, false, "Disable fast node for IAVL tree")

server/types/app.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ type (
3838

3939
RegisterAPIRoutes(*api.Server, config.APIConfig)
4040

41-
// RegisterGRPCServer registers gRPC services directly with the gRPC
42-
// server.
43-
RegisterGRPCServer(grpc.Server)
41+
// RegisterGRPCServerWithSkipCheckHeader registers gRPC services directly with the gRPC
42+
// server and bypass check header flag.
43+
RegisterGRPCServerWithSkipCheckHeader(grpc.Server, bool)
4444

4545
// RegisterTxService registers the gRPC Query service for tx (such as tx
4646
// simulation, fetching txs by hash...).

tools/confix/data/v0.52-app.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ max-recv-msg-size = "10485760"
169169
# The default value is math.MaxInt32.
170170
max-send-msg-size = "2147483647"
171171

172+
# SkipCheckHeader defines if the gRPC server should bypass check header.
173+
skip-check-header = false
174+
172175
###############################################################################
173176
### State Sync Configuration ###
174177
###############################################################################

0 commit comments

Comments
 (0)