Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: go net #1685

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ require (
github.com/cloudwego/dynamicgo v0.5.1-0.20250115031329-d58b94fc7d71
github.com/cloudwego/fastpb v0.0.5
github.com/cloudwego/frugal v0.2.3
github.com/cloudwego/gopkg v0.1.4-0.20241217093255-8980b14172b7
github.com/cloudwego/gopkg v0.1.4-0.20250108101532-52ba6073f5a1
github.com/cloudwego/localsession v0.1.2
github.com/cloudwego/netpoll v0.6.5
github.com/cloudwego/netpoll v0.6.6-0.20250203063552-1a23ea584add
github.com/cloudwego/runtimex v0.1.1
github.com/cloudwego/thriftgo v0.3.18
github.com/golang/mock v1.6.0
Expand Down
28 changes: 21 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/bytedance/gopkg v0.1.0/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ=
github.com/bytedance/gopkg v0.1.1 h1:3azzgSkiaw79u24a+w9arfH8OfnQQ4MHUt9lJFREEaE=
github.com/bytedance/gopkg v0.1.1/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
Expand All @@ -21,14 +20,14 @@ github.com/cloudwego/fastpb v0.0.5 h1:vYnBPsfbAtU5TVz5+f9UTlmSCixG9F9vRwaqE0mZPZ
github.com/cloudwego/fastpb v0.0.5/go.mod h1:Bho7aAKBUtT9RPD2cNVkTdx4yQumfSv3If7wYnm1izk=
github.com/cloudwego/frugal v0.2.3 h1:t1hhhAi8lXcx7Ncs4PR1pSZ90vlDU1cy5K2btDMFpoA=
github.com/cloudwego/frugal v0.2.3/go.mod h1:nC1U47gswLRiaxv6dybrhZvsDGCfQP9RGiiWC73CnoI=
github.com/cloudwego/gopkg v0.1.4-0.20241217093255-8980b14172b7 h1:RmKES3lXoM62rUVEEy0teTsPYNBtFpqSN1lYBw4v82g=
github.com/cloudwego/gopkg v0.1.4-0.20241217093255-8980b14172b7/go.mod h1:FQuXsRWRsSqJLsMVd5SYzp8/Z1y5gXKnVvRrWUOsCMI=
github.com/cloudwego/gopkg v0.1.4-0.20250108101532-52ba6073f5a1 h1:qkodCQ1+B+5GM9i/XplrZ54oSI/FEAl3OQYJFIJHeDY=
github.com/cloudwego/gopkg v0.1.4-0.20250108101532-52ba6073f5a1/go.mod h1:FQuXsRWRsSqJLsMVd5SYzp8/Z1y5gXKnVvRrWUOsCMI=
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cloudwego/localsession v0.1.2 h1:RBmeLDO5sKr4ujd8iBp5LTMmuVKLdu88jjIneq/fEZ8=
github.com/cloudwego/localsession v0.1.2/go.mod h1:J4uams2YT/2d4t7OI6A7NF7EcG8OlHJsOX2LdPbqoyc=
github.com/cloudwego/netpoll v0.6.5 h1:6E/BWhSzQoyLg9Kx/4xiMdIIpovzwBtXvuqSqaTUzDQ=
github.com/cloudwego/netpoll v0.6.5/go.mod h1:BtM+GjKTdwKoC8IOzD08/+8eEn2gYoiNLipFca6BVXQ=
github.com/cloudwego/netpoll v0.6.6-0.20250203063552-1a23ea584add h1:jpeTTxW6GUL1bbQuMt9AF7Mn6GSa1wc8W6LbeNokCqc=
github.com/cloudwego/netpoll v0.6.6-0.20250203063552-1a23ea584add/go.mod h1:MrUoUd9hf2pimAGP+a9MR2dn1m8xxlOhOqG08Vod0Q8=
github.com/cloudwego/runtimex v0.1.1 h1:lheZjFOyKpsq8TsGGfmX9/4O7F0TKpWmB8on83k7GE8=
github.com/cloudwego/runtimex v0.1.1/go.mod h1:23vL/HGV0W8nSCHbe084AgEBdDV4rvXenEUMnUNvUd8=
github.com/cloudwego/thriftgo v0.3.18 h1:gnr1vz7G3RbwwCK9AMKHZf63VYGa7ene6WbI9VrBJSw=
Expand Down Expand Up @@ -104,12 +103,14 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94=
Expand All @@ -133,6 +134,8 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
Expand All @@ -144,6 +147,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand All @@ -157,7 +161,9 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
Expand All @@ -169,6 +175,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand All @@ -186,16 +193,23 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand Down
24 changes: 24 additions & 0 deletions pkg/remote/trans/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"fmt"
"net"
"sync/atomic"
"time"

"github.com/cloudwego/kitex/pkg/remote"
Expand All @@ -29,6 +30,29 @@ import (

var readMoreTimeout = 5 * time.Millisecond

type (
CtxKeyOnRead struct{}
CtxValueOnRead struct {
onlyOnce int32
}
)

func (v *CtxValueOnRead) SetOnlyOnce(b bool) {
if b {
atomic.StoreInt32(&v.onlyOnce, 1)
} else {
atomic.StoreInt32(&v.onlyOnce, 0)
}
}

func (v *CtxValueOnRead) GetOnlyOnce() bool {
if atomic.LoadInt32(&v.onlyOnce) == 1 {
return true
} else {
return false
}
}

// Extension is the interface that trans extensions need to implement, it will make the extension of trans more easily.
// Normally if we want to extend transport layer we need to implement the trans interfaces which are defined in trans_handler.go.
// In fact most code logic is similar in same mode, so the Extension interface is the the differentiated part that need to
Expand Down
4 changes: 2 additions & 2 deletions pkg/remote/trans/gonet/bytebuffer.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func NewBufferReader(ir io.Reader) remote.ByteBuffer {
if npReader, ok := ir.(interface{ Reader() netpoll.Reader }); ok {
rw.reader = npReader.Reader()
} else {
rw.reader = netpoll.NewReader(ir)
rw.reader = netpoll.NewReaderReuseBuffer(ir)
}
rw.ioReader = ir
rw.status = remote.BitReadable
Expand All @@ -66,7 +66,7 @@ func NewBufferReader(ir io.Reader) remote.ByteBuffer {
// NewBufferWriter creates a new remote.ByteBuffer using the given netpoll.ZeroCopyWriter.
func NewBufferWriter(iw io.Writer) remote.ByteBuffer {
rw := rwPool.Get().(*bufferReadWriter)
rw.writer = netpoll.NewWriter(iw)
rw.writer = netpoll.NewWriterReuseBuffer(iw)
rw.ioWriter = iw
rw.status = remote.BitWritable
return rw
Expand Down
19 changes: 15 additions & 4 deletions pkg/remote/trans/gonet/trans_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
"sync"
"time"

"github.com/cloudwego/gopkg/concurrency/gopool"

"github.com/cloudwego/netpoll"

"github.com/cloudwego/kitex/pkg/remote/trans"
Expand Down Expand Up @@ -82,30 +84,39 @@
klog.Errorf("KITEX: BootstrapServer accept failed, err=%s", err.Error())
os.Exit(1)
}
go func() {
gopool.CtxGo(nil, func() {
var (
ctx = context.Background()
err error
)
defer func() {
transRecover(ctx, conn, "OnRead")
}()
bc := newBufioConn(conn)
bc := conn //newBufioConn(conn)
ctx, err = ts.transHdlr.OnActive(ctx, bc)
if err != nil {
klog.CtxErrorf(ctx, "KITEX: OnActive error=%s", err)
return
}
ctxValueOnRead := &trans.CtxValueOnRead{}
ctx = context.WithValue(ctx, trans.CtxKeyOnRead{}, ctxValueOnRead)
onReadOnlyOnceCheck := false
for {
ts.refreshDeadline(rpcinfo.GetRPCInfo(ctx), bc)
err := ts.transHdlr.OnRead(ctx, bc)
if !onReadOnlyOnceCheck {
onReadOnlyOnceCheck = true
if ctxValueOnRead.GetOnlyOnce() {
break
}
}
if err != nil {
ts.onError(ctx, err, bc)
_ = bc.Close()
return
}
}
}()
})
}
}

Expand Down Expand Up @@ -147,23 +158,23 @@
}

// bufioConn implements the net.Conn interface.
type bufioConn struct {

Check failure on line 161 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

type `bufioConn` is unused (unused)
conn net.Conn
r netpoll.Reader
}

func newBufioConn(c net.Conn) *bufioConn {

Check failure on line 166 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `newBufioConn` is unused (unused)
return &bufioConn{
conn: c,
r: netpoll.NewReader(c),
r: netpoll.NewReaderReuseBuffer(c),
}
}

func (bc *bufioConn) RawConn() net.Conn {

Check failure on line 173 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).RawConn` is unused (unused)
return bc.conn
}

func (bc *bufioConn) Read(b []byte) (int, error) {

Check failure on line 177 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).Read` is unused (unused)
buf, err := bc.r.Next(len(b))
if err != nil {
return 0, err
Expand All @@ -172,28 +183,28 @@
return len(b), nil
}

func (bc *bufioConn) Write(b []byte) (int, error) {

Check failure on line 186 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).Write` is unused (unused)
return bc.conn.Write(b)
}

func (bc *bufioConn) Close() error {

Check failure on line 190 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).Close` is unused (unused)
bc.r.Release()
return bc.conn.Close()
}

func (bc *bufioConn) LocalAddr() net.Addr {

Check failure on line 195 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).LocalAddr` is unused (unused)
return bc.conn.LocalAddr()
}

func (bc *bufioConn) RemoteAddr() net.Addr {

Check failure on line 199 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).RemoteAddr` is unused (unused)
return bc.conn.RemoteAddr()
}

func (bc *bufioConn) SetDeadline(t time.Time) error {

Check failure on line 203 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).SetDeadline` is unused (unused)
return bc.conn.SetDeadline(t)
}

func (bc *bufioConn) SetReadDeadline(t time.Time) error {

Check failure on line 207 in pkg/remote/trans/gonet/trans_server.go

View workflow job for this annotation

GitHub Actions / golangci-lint

func `(*bufioConn).SetReadDeadline` is unused (unused)
return bc.conn.SetReadDeadline(t)
}

Expand Down
6 changes: 6 additions & 0 deletions pkg/remote/trans/nphttp2/server_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import (
"sync/atomic"
"time"

"github.com/cloudwego/kitex/pkg/remote/trans"

"github.com/cloudwego/netpoll"

"github.com/cloudwego/kitex/pkg/endpoint"
Expand Down Expand Up @@ -128,6 +130,10 @@ func (t *svrTransHandler) Read(ctx context.Context, conn net.Conn, msg remote.Me

// 只 return write err
func (t *svrTransHandler) OnRead(ctx context.Context, conn net.Conn) error {
if v := ctx.Value(trans.CtxKeyOnRead{}); v != nil {
value := v.(*trans.CtxValueOnRead)
value.SetOnlyOnce(true)
}
svrTrans := ctx.Value(ctxKeySvrTransport).(*SvrTrans)
tr := svrTrans.tr
tr.HandleStreams(func(s *grpcTransport.Stream) {
Expand Down