TUN-8489: Add default noop logger for capnprpc

This commit is contained in:
Devin Carr 2024-06-26 13:34:49 -07:00
parent d875839e5e
commit 6174c4588b
7 changed files with 26 additions and 13 deletions

View File

@ -32,7 +32,7 @@ func NewCloudflaredClient(ctx context.Context, stream io.ReadWriteCloser, reques
return nil, fmt.Errorf("expect to write %d bytes for RPC stream protocol signature, wrote %d", len(rpcStreamProtocolSignature), n) return nil, fmt.Errorf("expect to write %d bytes for RPC stream protocol signature, wrote %d", len(rpcStreamProtocolSignature), n)
} }
transport := tunnelrpc.SafeTransport(stream) transport := tunnelrpc.SafeTransport(stream)
conn := rpc.NewConn(transport) conn := tunnelrpc.NewClientConn(transport)
client := pogs.NewCloudflaredServer_PogsClient(conn.Bootstrap(ctx), conn) client := pogs.NewCloudflaredServer_PogsClient(conn.Bootstrap(ctx), conn)
return &CloudflaredClient{ return &CloudflaredClient{
client: client, client: client,

View File

@ -6,8 +6,6 @@ import (
"io" "io"
"time" "time"
"zombiezen.com/go/capnproto2/rpc"
"github.com/cloudflare/cloudflared/tunnelrpc" "github.com/cloudflare/cloudflared/tunnelrpc"
"github.com/cloudflare/cloudflared/tunnelrpc/pogs" "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
) )
@ -58,7 +56,7 @@ func (s *CloudflaredServer) handleRPC(ctx context.Context, stream io.ReadWriteCl
defer transport.Close() defer transport.Close()
main := pogs.CloudflaredServer_ServerToClient(s.sessionManager, s.configManager) main := pogs.CloudflaredServer_ServerToClient(s.sessionManager, s.configManager)
rpcConn := rpc.NewConn(transport, rpc.MainInterface(main.Client)) rpcConn := tunnelrpc.NewServerConn(transport, main.Client)
defer rpcConn.Close() defer rpcConn.Close()
// We ignore the errors here because if cloudflared fails to handle a request, we will just move on. // We ignore the errors here because if cloudflared fails to handle a request, we will just move on.

View File

@ -31,7 +31,7 @@ func NewSessionClient(ctx context.Context, stream io.ReadWriteCloser, requestTim
return nil, fmt.Errorf("expect to write %d bytes for RPC stream protocol signature, wrote %d", len(rpcStreamProtocolSignature), n) return nil, fmt.Errorf("expect to write %d bytes for RPC stream protocol signature, wrote %d", len(rpcStreamProtocolSignature), n)
} }
transport := tunnelrpc.SafeTransport(stream) transport := tunnelrpc.SafeTransport(stream)
conn := rpc.NewConn(transport) conn := tunnelrpc.NewClientConn(transport)
return &SessionClient{ return &SessionClient{
client: pogs.NewSessionManager_PogsClient(conn.Bootstrap(ctx), conn), client: pogs.NewSessionManager_PogsClient(conn.Bootstrap(ctx), conn),
transport: transport, transport: transport,

View File

@ -6,8 +6,6 @@ import (
"io" "io"
"time" "time"
"zombiezen.com/go/capnproto2/rpc"
"github.com/cloudflare/cloudflared/tunnelrpc" "github.com/cloudflare/cloudflared/tunnelrpc"
"github.com/cloudflare/cloudflared/tunnelrpc/pogs" "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
) )
@ -48,7 +46,7 @@ func (s *SessionManagerServer) Serve(ctx context.Context, stream io.ReadWriteClo
defer transport.Close() defer transport.Close()
main := pogs.SessionManager_ServerToClient(s.sessionManager) main := pogs.SessionManager_ServerToClient(s.sessionManager)
rpcConn := rpc.NewConn(transport, rpc.MainInterface(main.Client)) rpcConn := tunnelrpc.NewServerConn(transport, main.Client)
defer rpcConn.Close() defer rpcConn.Close()
select { select {

View File

@ -35,7 +35,7 @@ type registrationClient struct {
func NewRegistrationClient(ctx context.Context, stream io.ReadWriteCloser, requestTimeout time.Duration) RegistrationClient { func NewRegistrationClient(ctx context.Context, stream io.ReadWriteCloser, requestTimeout time.Duration) RegistrationClient {
transport := SafeTransport(stream) transport := SafeTransport(stream)
conn := rpc.NewConn(transport) conn := NewClientConn(transport)
client := pogs.NewRegistrationServer_PogsClient(conn.Bootstrap(ctx), conn) client := pogs.NewRegistrationServer_PogsClient(conn.Bootstrap(ctx), conn)
return &registrationClient{ return &registrationClient{
client: client, client: client,

View File

@ -4,8 +4,6 @@ import (
"context" "context"
"io" "io"
"zombiezen.com/go/capnproto2/rpc"
"github.com/cloudflare/cloudflared/tunnelrpc/pogs" "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
) )
@ -28,8 +26,7 @@ func (s *RegistrationServer) Serve(ctx context.Context, stream io.ReadWriteClose
defer transport.Close() defer transport.Close()
main := pogs.RegistrationServer_ServerToClient(s.registrationServer) main := pogs.RegistrationServer_ServerToClient(s.registrationServer)
rpcConn := rpc.NewConn(transport, rpc.MainInterface(main.Client)) rpcConn := NewServerConn(transport, main.Client)
defer rpcConn.Close()
select { select {
case <-rpcConn.Done(): case <-rpcConn.Done():

View File

@ -1,10 +1,12 @@
package tunnelrpc package tunnelrpc
import ( import (
"context"
"io" "io"
"time" "time"
"github.com/pkg/errors" "github.com/pkg/errors"
capnp "zombiezen.com/go/capnproto2"
"zombiezen.com/go/capnproto2/rpc" "zombiezen.com/go/capnproto2/rpc"
) )
@ -67,3 +69,21 @@ func isTemporaryError(e error) bool {
t, ok := e.(temp) t, ok := e.(temp)
return ok && t.Temporary() return ok && t.Temporary()
} }
// NoopCapnpLogger provides a logger to discard all capnp rpc internal logging messages as
// they are by default provided to stdout if no logger interface is provided. These logging
// messages in cloudflared have typically not provided a high amount of pratical value
// as the messages are extremely verbose and don't provide a good insight into the message
// contents or rpc method names.
type noopCapnpLogger struct{}
func (noopCapnpLogger) Infof(ctx context.Context, format string, args ...interface{}) {}
func (noopCapnpLogger) Errorf(ctx context.Context, format string, args ...interface{}) {}
func NewClientConn(transport rpc.Transport) *rpc.Conn {
return rpc.NewConn(transport, rpc.ConnLog(noopCapnpLogger{}))
}
func NewServerConn(transport rpc.Transport, client capnp.Client) *rpc.Conn {
return rpc.NewConn(transport, rpc.MainInterface(client), rpc.ConnLog(noopCapnpLogger{}))
}