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

Requesting list of records with null foreign key relationship mix up the response and makes data integrity issue #235

Closed
alaa-barari opened this issue Oct 5, 2022 · 5 comments
Labels
bug Something isn't working

Comments

@alaa-barari
Copy link

alaa-barari commented Oct 5, 2022

Bug description

As you can see in the below query, i am requesting list of orders, each order has federated query with Branch, not all orders have a branch hence when the branch id is null, wundergraph returned mixed data, basically in the response you will see for each order record responses are correct until it reach the first null branch and it will start mixing data

query orderslist($first: Int){
  orders(first:$first) {
    edges {
      node {
        number
        id
        branch {
            name
            id
        }
      }
    }
  }
}

Variables:

{
  "first": 100
}

---------------------------------------------federated query
branch service query as you see the problem is in {"__typename":"Branch"} basically it request with no id on go-tools it requests with {"id":null,"__typename":"Branch"}, i dont believe this should be request, and wondergraph should not expect other than graph, I tried same scnario on appolo and it does not request null id:

Query

query($representations: [_Any!]!){
  _entities(representations: $representations)
  {... on Branch {name, id}
  }
}

Variables

{"representations":[{"__typename":"Branch","id":"QnJhbmNoOjkx"},{"__typename":"Branch","id":"QnJhbmNoOjY4"},{"__typename":"Branch","id":"QnJhbmNoOjEzNw=="},{"__typename":"Branch","id":"QnJhbmNoOjEzNA=="},{"__typename":"Branch","id":"QnJhbmNoOjEyNw=="},{"__typename":"Branch","id":"QnJhbmNoOjE3"},{"__typename":"Branch","id":"QnJhbmNoOjQ3"},{"__typename":"Branch"},{"__typename":"Branch","id":"QnJhbmNoOjE3OQ=="},{"__typename":"Branch","id":"QnJhbmNoOjEwNA=="},{"__typename":"Branch","id":"QnJhbmNoOjc0"}]}

federated response :

{
    "data": {
      "_entities": [
        {
          "name": "Branch 1"
        },
        {
          "name": "Branch 2"
        },
        {
          "name": "Branch 3"
        },
        {
          "name": "Branch 4"
        },
        {
          "name": "Branch 5"
        },
        {
          "name": "Branch 7"
        },
        {
          "name": "Branch 9"
        },
        null,
        {
          "name": "Branch 6"
        },
        {
          "name": "Branch 10"
        },
        {
          "name": "Branch 8"
        }
      ]
    }
  }

-----------------------------------Response-----------------------------------

{
    "data": {
        "orders": {
            "edges": [
                {
                    "node": {
                        "number": "628",
                        "id": "T3JkZXI6NjI4",
                        "branch": {
                            "name": "Branch 1",
                            "id": "QnJhbmNoOjkx"
                        }
                    }
                },
                {
                    "node": {
                        "number": "627",
                        "id": "T3JkZXI6NjI3",
                        "branch": {
                            "name": "Branch 2",
                            "id": "QnJhbmNoOjY4"
                        }
                    }
                },
                {
                    "node": {
                        "number": "626",
                        "id": "T3JkZXI6NjI2",
                        "branch": {
                            "name": "Branch 3",
                            "id": "QnJhbmNoOjEzNw=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "625",
                        "id": "T3JkZXI6NjI1",
                        "branch": {
                            "name": "Branch 4",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "624",
                        "id": "T3JkZXI6NjI0",
                        "branch": {
                            "name": "Branch 5",
                            "id": "QnJhbmNoOjEyNw=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "623",
                        "id": "T3JkZXI6NjIz",
                        "branch": {
                            "name": "Branch 7",
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "620",
                        "id": "T3JkZXI6NjIw",
                        "branch": {
                            "name": "Branch 9",
                            "id": "QnJhbmNoOjQ3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "605",
                        "id": "T3JkZXI6NjA1",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "596",
                        "id": "T3JkZXI6NTk2",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "594",
                        "id": "T3JkZXI6NTk0",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "584",
                        "id": "T3JkZXI6NTg0",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "583",
                        "id": "T3JkZXI6NTgz",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "575",
                        "id": "T3JkZXI6NTc1",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjEwNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "572",
                        "id": "T3JkZXI6NTcy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "564",
                        "id": "T3JkZXI6NTY0",
                        "branch": {
                            "name": "Branch 7",
                            "id": "QnJhbmNoOjEwNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "561",
                        "id": "T3JkZXI6NTYx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "540",
                        "id": "T3JkZXI6NTQw",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "538",
                        "id": "T3JkZXI6NTM4",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "530",
                        "id": "T3JkZXI6NTMw",
                        "branch": {
                            "name": "Branch 10",
                            "id": "QnJhbmNoOjEwNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "527",
                        "id": "T3JkZXI6NTI3",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "523",
                        "id": "T3JkZXI6NTIz",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjEwNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "516",
                        "id": "T3JkZXI6NTE2",
                        "branch": {
                            "name": "Branch 10",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "511",
                        "id": "T3JkZXI6NTEx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "505",
                        "id": "T3JkZXI6NTA1",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "496",
                        "id": "T3JkZXI6NDk2",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "494",
                        "id": "T3JkZXI6NDk0",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "487",
                        "id": "T3JkZXI6NDg3",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjEyNw=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "483",
                        "id": "T3JkZXI6NDgz",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "474",
                        "id": "T3JkZXI6NDc0",
                        "branch": {
                            "name": "Branch 10",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "472",
                        "id": "T3JkZXI6NDcy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "463",
                        "id": "T3JkZXI6NDYz",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "461",
                        "id": "T3JkZXI6NDYx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "452",
                        "id": "T3JkZXI6NDUy",
                        "branch": {
                            "name": "Branch 10",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "450",
                        "id": "T3JkZXI6NDUw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "433",
                        "id": "T3JkZXI6NDMz",
                        "branch": {
                            "name": "Branch 4",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "431",
                        "id": "T3JkZXI6NDMx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "422",
                        "id": "T3JkZXI6NDIy",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "420",
                        "id": "T3JkZXI6NDIw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "410",
                        "id": "T3JkZXI6NDEw",
                        "branch": {
                            "name": "Branch 7",
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "404",
                        "id": "T3JkZXI6NDA0",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "402",
                        "id": "T3JkZXI6NDAy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "399",
                        "id": "T3JkZXI6Mzk5",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "393",
                        "id": "T3JkZXI6Mzkz",
                        "branch": {
                            "name": "Branch 5",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "391",
                        "id": "T3JkZXI6Mzkx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "385",
                        "id": "T3JkZXI6Mzg1",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "380",
                        "id": "T3JkZXI6Mzgw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "364",
                        "id": "T3JkZXI6MzY0",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "362",
                        "id": "T3JkZXI6MzYy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "359",
                        "id": "T3JkZXI6MzU5",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "356",
                        "id": "T3JkZXI6MzU2",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "353",
                        "id": "T3JkZXI6MzUz",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "351",
                        "id": "T3JkZXI6MzUx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "345",
                        "id": "T3JkZXI6MzQ1",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "340",
                        "id": "T3JkZXI6MzQw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "337",
                        "id": "T3JkZXI6MzM3",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "334",
                        "id": "T3JkZXI6MzM0",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "331",
                        "id": "T3JkZXI6MzMx",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "329",
                        "id": "T3JkZXI6MzI5",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "315",
                        "id": "T3JkZXI6MzE1",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "310",
                        "id": "T3JkZXI6MzEw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "309",
                        "id": "T3JkZXI6MzA5",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjY4"
                        }
                    }
                },
                {
                    "node": {
                        "number": "308",
                        "id": "T3JkZXI6MzA4",
                        "branch": {
                            "name": "Branch 8",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "307",
                        "id": "T3JkZXI6MzA3",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "302",
                        "id": "T3JkZXI6MzAy",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "298",
                        "id": "T3JkZXI6Mjk4",
                        "branch": {
                            "name": "Branch 8",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "291",
                        "id": "T3JkZXI6Mjkx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "281",
                        "id": "T3JkZXI6Mjgx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "275",
                        "id": "T3JkZXI6Mjc1",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "274",
                        "id": "T3JkZXI6Mjc0",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "268",
                        "id": "T3JkZXI6MjY4",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "267",
                        "id": "T3JkZXI6MjY3",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "263",
                        "id": "T3JkZXI6MjYz",
                        "branch": {
                            "name": "Branch 4",
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "260",
                        "id": "T3JkZXI6MjYw",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "257",
                        "id": "T3JkZXI6MjU3",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "253",
                        "id": "T3JkZXI6MjUz",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "250",
                        "id": "T3JkZXI6MjUw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "243",
                        "id": "T3JkZXI6MjQz",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "242",
                        "id": "T3JkZXI6MjQy",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjc0"
                        }
                    }
                },
                {
                    "node": {
                        "number": "238",
                        "id": "T3JkZXI6MjM4",
                        "branch": {
                            "name": "Branch 8",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "236",
                        "id": "T3JkZXI6MjM2",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "231",
                        "id": "T3JkZXI6MjMx",
                        "branch": {
                            "name": "Branch 4",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "229",
                        "id": "T3JkZXI6MjI5",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "223",
                        "id": "T3JkZXI6MjIz",
                        "branch": {
                            "name": "Branch 6",
                            "id": "QnJhbmNoOjE3"
                        }
                    }
                },
                {
                    "node": {
                        "number": "222",
                        "id": "T3JkZXI6MjIy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "221",
                        "id": "T3JkZXI6MjIx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "220",
                        "id": "T3JkZXI6MjIw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "219",
                        "id": "T3JkZXI6MjE5",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "214",
                        "id": "T3JkZXI6MjE0",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "212",
                        "id": "T3JkZXI6MjEy",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "211",
                        "id": "T3JkZXI6MjEx",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "210",
                        "id": "T3JkZXI6MjEw",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "209",
                        "id": "T3JkZXI6MjA5",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "208",
                        "id": "T3JkZXI6MjA4",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "207",
                        "id": "T3JkZXI6MjA3",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "206",
                        "id": "T3JkZXI6MjA2",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "201",
                        "id": "T3JkZXI6MjAx",
                        "branch": {
                            "name": "Branch 4",
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "199",
                        "id": "T3JkZXI6MTk5",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "194",
                        "id": "T3JkZXI6MTk0",
                        "branch": {
                            "name": null,
                            "id": "QnJhbmNoOjE3OQ=="
                        }
                    }
                },
                {
                    "node": {
                        "number": "192",
                        "id": "T3JkZXI6MTky",
                        "branch": null
                    }
                },
                {
                    "node": {
                        "number": "191",
                        "id": "T3JkZXI6MTkx",
                        "branch": {
                            "name": "Branch 8",
                            "id": "QnJhbmNoOjEzNA=="
                        }
                    }
                }
            ]
        }
    }
}

How to reproduce

Expected behavior

I tried the same thing on the apollo server and in the service query it neither asks for null id or leaves empty and it does not expect it

currently on wundergraph it sends it without an id and when the service replies with null, wundergraph starts mixing data
on go tools it sends with id = null and returns from service is null and go tools gateway starts mixing data.

WunderGraph information

wunderctl version : 0.111.2

Environment & setup

  • OS: [CentOS]
  • Database: [My sql ]

WunderCtl Version

wunderctl version : 0.111.2
@alaa-barari alaa-barari added the bug Something isn't working label Oct 5, 2022
@StarpTech
Copy link
Collaborator

Hi @alaa-barari, thanks for opening an issue. Could you please format the issue properly?

@alaa-barari
Copy link
Author

@alaa-barari : what you need me to update exactly please ?

@jensneuse
Copy link
Member

@alaa-barari : what you need me to update exactly please ?

Please put the logs in code fences so that it's readable. =)

@jensneuse
Copy link
Member

@alaa-barari this should be fixed with the latest release
Can you try it out and report back if it works in your case?

@Pagebakers
Copy link
Contributor

@alaa-barari I assume it has been resolved, if not you can re-open this issue.

Thanks again for your feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants