So this final PUT
request looks to be pathologic and it seems to be related to the issue highlighted in the bullet point before this. In particular, despite the error about “CORS header ‘Access-Control-Allow-Origin’ missing”, the actual pre-flight request (i.e., the OPTIONS
request) seems to succeed and the PUT
request fails with a 504 (Gateway Timeout) error after ~1 minute.
The reason I think this is linked to the issue above is that the request payload for that request is this:
{"data":{"expressions":["/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1067/","/orgs/CIEL/sources/CIEL/concepts/162625/","/orgs/CIEL/sources/CIEL/concepts/1065/","/orgs/CIEL/sources/CIEL/concepts/1226/"]}}
I’m not sure why the client would be making the ~20 calls to the mappings request, especially for the same value. That looks like there is an issue on the client side. However, the API v2 is either operating with a very different version of CIEL or just outright returning an incorrect response for the request to:
/orgs/CIEL/sources/CIEL/mappings/?fromConcept=1226&limit=0
In prod, this query returns 5 results without any of them being 1067, 1065, or 162625. In the QA v2, the same same query returns 24 results, including 1067, 1065, 162625, every single one of them wrong (i.e., none of the results match from_concept_code == 1226
whereas I’d expect every result in that result set to have from_concept_code == 1226
).
It seems like the “solution” is what Sny suggested here, i.e., adding &q=
to the end of the query string results in the right answers and in a reasonable time frame. Locally, I can change the query here to include the &q=
and the pathological behaviour stops (we I get one GET
request to get the mappings and one working PUT
request to add them in).
That said, this kind of issue makes me nervous that we’re ready to cut over to API v2 without extensive testing.