spacewander commented on pull request #42:
URL: 
https://github.com/apache/apisix-go-plugin-runner/pull/42#issuecomment-938495725


   Interesting. We don't call `util.PutBuilder` in server/server.go:122 after 
applying this change.
   
   Here is the old stack:
   ```
   2021/10/8 上午11:03:14 
github.com/apache/apisix-go-plugin-runner/internal/util.PutBuilder
   2021/10/8 上午11:03:14 
/var/lib/jenkins/workspace/build-dev-apple-fuller-apisix-go-plugin-runner/apisix-go-plugin-runner/internal/util/pool.go:37
   2021/10/8 上午11:03:14 
github.com/apache/apisix-go-plugin-runner/internal/server.handleConn
   2021/10/8 上午11:03:14 
/var/lib/jenkins/workspace/build-dev-apple-fuller-apisix-go-plugin-runner/apisix-go-plugin-runner/internal/server/server.go:122
   ```
   
   Here is the new stack:
   ```
   github.com/apache/apisix-go-plugin-runner/internal/util.PutBuilder 
        
/var/lib/jenkins/workspace/build-dev-apple-fuller-apisix-go-plugin-runner/apisix-go-plugin-runner/internal/util/pool.go:37 
   github.com/apache/apisix-go-plugin-runner/internal/server.handleConn 
        
/var/lib/jenkins/workspace/build-dev-apple-fuller-apisix-go-plugin-runner/apisix-go-plugin-runner/internal/server/server.go:122
   ```
   
   Could you check if the code has the given patch? I already removed the 
`util.PutBuilder` in line 122.
   ```
   diff --git a/internal/server/server.go b/internal/server/server.go
   index 48d6da0..6193a11 100644
   --- a/internal/server/server.go
   +++ b/internal/server/server.go
   @@ -70,12 +70,22 @@ func recoverPanic() {
        }
    }
    
   -func dispatchRPC(ty byte, in []byte, conn net.Conn) (*flatbuffers.Builder, 
error) {
   +func dispatchRPC(ty byte, in []byte, conn net.Conn) *flatbuffers.Builder {
   +    var err error
   +    var bd *flatbuffers.Builder
        hl, ok := typeHandlerMap[ty]
        if !ok {
   -            return nil, UnknownType{ty}
   +            err = UnknownType{ty}
   +    } else {
   +            bd, err = hl(in, conn)
   +    }
   +
   +    if err != nil {
   +            bd = generateErrorReport(err)
   +    } else {
   +            bd = checkIfDataTooLarge(bd)
        }
   -    return hl(in, conn)
   +    return bd
    }
    
    func checkIfDataTooLarge(bd *flatbuffers.Builder) *flatbuffers.Builder {
   @@ -116,15 +126,7 @@ func handleConn(c net.Conn) {
                        break
                }
    
   -            bd, err := dispatchRPC(ty, buf, c)
   -
   -            if err != nil {
   -                    util.PutBuilder(bd)
   -                    bd = generateErrorReport(err)
   -            } else {
   -                    bd = checkIfDataTooLarge(bd)
   -            }
   -
   +            bd := dispatchRPC(ty, buf, c)
                out := bd.FinishedBytes()
                size := len(out)
                binary.BigEndian.PutUint32(header, uint32(size))
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to