gitcome opened a new issue, #7963:
URL: https://github.com/apache/apisix/issues/7963

   ### Description
   
   run apisix-go-plugin-runner ,in func RequestFilter, WriteHeader then return, 
grpc client will report an error(code = Internal desc = server closed the 
stream without sending trailers)
   
   I studied for a day and didn't know how to solve the problem.  can anybody 
help solve the problem? thanks a lot!
   
   
   apisix: apache/apisix:2.15.0-alpine
   plugin-runner: apache/apisix-go-plugin-runner v0.4.0
   
   1. modify code in 
apisix-go-plugin-runner-master\cmd\go-runner\plugins\say.go, as follows:
   
   `func (p *Say) RequestFilter(conf interface{}, w http.ResponseWriter, r 
pkgHTTP.Request) {
        w.Header().Set("Content-Type", r.Header().Get("Content-Type"))
        num := rand.Int()
        if num%2 == 1 {
                w.WriteHeader(http.StatusOK)
                w.Header().Set("mykey", "test")
                w.Header().Set("Grpc-Status", "0")
                w.Header().Set("Grpc-Message", "ok")
                w.Header().Set("Grpc-Status-Details-Bin", "")
                return
        }
   }`
   
   run a grpc server in 192.168.56.19:8301
   2. then run apisix, config upstream in APISIX Dashboard,as follows:
   
   `{
     "nodes": [
       {
         "host": "192.168.56.19",
         "port": 8301,
         "weight": 1
       }
     ],
     "timeout": {
       "connect": 6,
       "send": 6,
       "read": 6
     },
     "type": "roundrobin",
     "scheme": "grpc",
     "pass_host": "pass",
     "name": "testa",
     "keepalive_pool": {
       "idle_timeout": 60,
       "requests": 1000,
       "size": 320
     }
   }`
   
   3. then add a route config, as follows:
   `{
     "uri": "/routeguide.RouteGuide/GetFeature",
     "name": "testa1",
     "methods": [
       "GET",
       "POST",
       "PUT",
       "DELETE",
       "PATCH",
       "HEAD",
       "OPTIONS",
       "CONNECT",
       "TRACE"
     ],
     "plugins": {
       "ext-plugin-post-req": {
         "conf": [
           {
             "name": "say",
             "value": "{\"body\":\"123\"}"
           }
         ],
         "disable": false
       }
     },
     "upstream_id": "425744995673178819",
     "status": 1
   }`
   
   4. then use client grpc call apisix, but have an error (rpc error: code = 
Internal desc = server closed the stream without sending trailers),as follows:
   
   `2022/09/21 19:45:47.860 [I] [main.go:59]  header: 
map[content-type:[application/grpc] date:[Wed, 21 Sep 2022 11:45:47 GMT] 
mykey:[test] server:[APISIX/2.15.0]]
   2022/09/21 19:45:47.860 [I] [main.go:60]  trailer: map[]
   2022/09/21 19:45:47.861 [E] [main.go:62]  rpc error: code = Internal desc = 
server closed the stream without sending trailers
   `
   
   ### Environment
   
   os: win10
   apisix: apache/apisix:2.15.0-alpine  (use 
apisix-docker\example\docker-compose.yml  docker-compose up)
   plugin-runner: apache/apisix-go-plugin-runner v0.4.0


-- 
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