Itgenoda055 Request timeout bij ophalen GLAccountClassificationMappings

De volgende melding treedt op bij ophalen van de GLAccountClassificationMappings op twee Exact Online administraties:

itgenoda055
Request timeout.
Please consider reducing the scope of your request or retry to send the message.
The remote server returned an error:
(408) Request Time-out.

De gebruikte OData4-URL is:

/acme-exact-online-15/odata4/ExactOnlineREST.Financial.GLAccountClassificationMappings@eol?$filter=%28Division%20eq%203186747%20or%20Division%20eq%203180620%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%20or%20Division%20eq%20null%29%20and%20GLSchemeCode%20eq%20%271%27

Omgezet door Bridge Online in SQL luidt die:

select t.*
from   ExactOnlineREST.Financial.GLAccountClassificationMappings@eol t
where  (((((((((((((((((((Division in (:w1, :w2)) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) or ([Division] is null )) and ([GLSchemeCode] = :w3))

De uiteindelijke API-call die faalt is:

https://start.exactonline.nl/api/v1/3186747/financial/GLAccountClassificationMappings?$filter=GLSchemeCode%20eq%20’1’&$select=*&$skiptoken=guid’bf2e5f8f-799d-4609-a649-1b274383136c’

De foutmelding treedt regelmatig op (meerdere malen per nacht) en op meerdere databases.

De foutmelding is ook consistent op te wekken met de volgende query in de web SQL Editor:

select /*+ http_disk_cache(false) http_memory_cache(false) */ *
from   ExactOnlineREST.Financial.GLAccountClassificationMappings@eol t
where  GLSchemeCode = '1'

Deze query met toevoeging limit 5 is na 18.697 ms klaar, terwijl dit maar 1 API-call behelst. Dit is ook terug te zien in de SessionIOs@DataDictionary:

Het eigenaardige is dat API-calls zonder een GLSchemeCode mee te geven circa 100x sneller klaar zijn:

Het verwachte resultaat is 958 rijen met GLSchemeCode 1 uit een totale inhoud voor deze twee administraties van 4508 rijen.

Een ticket is ingediend bij Exact Online met nummer 03539244.

Het probleem is gelijkend op Itgenboe161: The data download was cancelled bij SalesEntries op Exact Online. Gezien op dat Exact Online ticket in 4 maanden geen meetbare voortgang is geweest, is het advies om daarnaast het ticketnummer door te geven aan de accountmanager.

Als workaround kan geprobeerd worden tussen de filterstap op GLSchemeCode en de data ophalen een aantal stappen tussen te voegen zodat de data ongefilterd opgehaald wordt.

Op dit moment willen we de SQL-engine niet aanpassen om het filteren op GLSchemeCode onmogelijk te maken. De performanceproblemen delen we momenteel nog in als een door de cloudpartner op te lossen bug. Mocht dit probleem langdurig blijven bestaan, dan zal de filtermogelijkheid in een nieuwe release verwijderd worden. Dit leidt wel tot een grotere consumptie van API-calls (circa 100 per keer).