I'm using Krakend to build an API gateway to connect three backend services. The gateway always returns from one or two of the backend services with the X-Krakend-Completed header
always set to false.
What could be the cause of the http: invalid Read on closed Body
error in the logs?
GET localhost:8000
response
{
"user-id": 1,
"payments-id": 1,
"loans-id": 1,
}
GET localhost:8000
response
{
"payment-id": 1
}
Krakend log
[GIN] 2022/03/01 - 16:29:41 | 200 | 801.319µs | ::1 | GET "/"
Error #01: Get "http://localhost:5000/users": http: invalid Read on closed Body
Get "http://localhost:6000/loans": http: invalid Read on closed Body
[GIN] 2022/03/01 - 16:29:55 | 200 | 851.735µs | ::1 | GET "/"
Error #01: Get "http://localhost:6000/loans": http: invalid Read on closed Body
Get "http://localhost:5000/users": http: invalid Read on closed Body
type Payment struct {
Id int32 `json:"payment-id"`
}
var payments = []Payment{
{
Id: 0,
},
{
Id: 1,
}
}
func main() {
app := fiber.New()
app.Get("/payments", func(c *fiber.Ctx) error {
return c.JSON(payments[1])
})
app.Listen(":7000")
}
func main() {
app := fiber.New()
app.Get("/loans", func(c *fiber.Ctx) error {
return c.JSON(loans[1])
})
app.Listen(":6000")
}
func main() {
app := fiber.New()
app.Get("/users", func(c *fiber.Ctx) error {
return c.JSON(users[1])
})
app.Listen(":5000")
}
{
"version": 2,
"timeout": "3000ms",
"cache_ttl": "300s",
"output_encoding": "json",
"name": "users",
"port": 8000,
"read_timeout": "2s",
"write_timeout": "2s",
"idle_timeout": "2s",
"read_header_timeout": "2s",
"endpoints": [
{
"endpoint": "/",
"method": "GET",
"output_encoding": "json",
"backend": [
{
"url_pattern": "/users",
"encoding": "json",
"method": "GET",
"host": [
"http://localhost:5000"
]
},
{
"url_pattern": "/loans",
"encoding": "json",
"method": "GET",
"host": [
"http://localhost:6000"
]
},
{
"url_pattern": "/payments",
"encoding": "json",
"method": "GET",
"host": [
"http://localhost:7000"
]
}
]
}
]
}
I was unknowningly sending a body on a GET request resulting in the Krakend http: invalid Read on closed Body
error
Link to Github Issue