Skip to content

Commit 55f7cfc

Browse files
authored
refactor(serevr/v2/cometbft): update RegisterQueryHandlers and GRPC queries (#22403)
1 parent e9436a6 commit 55f7cfc

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

runtime/v2/manager.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ func registerServices[T transaction.Tx](s appmodulev2.AppModule, app *App[T], re
642642

643643
// if module implements register msg handlers
644644
if module, ok := s.(appmodulev2.HasMsgHandlers); ok {
645-
wrapper := stfRouterWrapper{stfRouter: app.msgRouterBuilder}
645+
wrapper := newStfRouterWrapper(app.msgRouterBuilder)
646646
module.RegisterMsgHandlers(&wrapper)
647647
if wrapper.error != nil {
648648
return fmt.Errorf("unable to register handlers: %w", wrapper.error)
@@ -651,7 +651,7 @@ func registerServices[T transaction.Tx](s appmodulev2.AppModule, app *App[T], re
651651

652652
// if module implements register query handlers
653653
if module, ok := s.(appmodulev2.HasQueryHandlers); ok {
654-
wrapper := stfRouterWrapper{stfRouter: app.queryRouterBuilder}
654+
wrapper := newStfRouterWrapper(app.queryRouterBuilder)
655655
module.RegisterQueryHandlers(&wrapper)
656656

657657
for path, handler := range wrapper.handlers {
@@ -842,6 +842,13 @@ type stfRouterWrapper struct {
842842
handlers map[string]appmodulev2.Handler
843843
}
844844

845+
func newStfRouterWrapper(stfRouterBuilder *stf.MsgRouterBuilder) stfRouterWrapper {
846+
wrapper := stfRouterWrapper{stfRouter: stfRouterBuilder}
847+
wrapper.error = nil
848+
wrapper.handlers = map[string]appmodulev2.Handler{}
849+
return wrapper
850+
}
851+
845852
func (s *stfRouterWrapper) RegisterHandler(handler appmodulev2.Handler) {
846853
req := handler.MakeMsg()
847854
requestName := gogoproto.MessageName(req)
@@ -854,7 +861,7 @@ func (s *stfRouterWrapper) RegisterHandler(handler appmodulev2.Handler) {
854861
s.error = errors.Join(s.error, err)
855862

856863
// also make the decoder
857-
if s.error == nil {
864+
if s.handlers == nil {
858865
s.handlers = map[string]appmodulev2.Handler{}
859866
}
860867
s.handlers[requestName] = handler

server/v2/cometbft/abci.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,15 @@ func (c *Consensus[T]) maybeRunGRPCQuery(ctx context.Context, req *abci.QueryReq
259259
return nil, false, err
260260
}
261261

262+
var handlerFullName string
262263
md, isGRPC := desc.(protoreflect.MethodDescriptor)
263264
if !isGRPC {
264-
return nil, false, nil
265+
handlerFullName = string(desc.FullName())
266+
} else {
267+
handlerFullName = string(md.Input().FullName())
265268
}
266269

267-
handler, found := c.queryHandlersMap[string(md.Input().FullName())]
270+
handler, found := c.queryHandlersMap[handlerFullName]
268271
if !found {
269272
return nil, true, fmt.Errorf("no query handler found for %s", req.Path)
270273
}
@@ -282,7 +285,7 @@ func (c *Consensus[T]) maybeRunGRPCQuery(ctx context.Context, req *abci.QueryReq
282285
}
283286

284287
resp, err = queryResponse(res, req.Height)
285-
return resp, isGRPC, err
288+
return resp, true, err
286289
}
287290

288291
// InitChain implements types.Application.

0 commit comments

Comments
 (0)