Sample download GLAccountClassificationMappings blijft hangen

Bij het ophalen van de volgende query via Bridge Online:

select t.[ID], t.[Classification], t.[ClassificationCode], t.[ClassificationDescription], t.[GLAccount], t.[GLSchemeCode]
from   ExactOnlineREST.Financial.GLAccountClassificationMappings@eol t
where  (Division in (:w1, :w2) and [GLSchemeCode] = :w3)
limit  1000

treedt er geen voortgang op sinds 29 april 2025 onder versie 24.0.671 (werkte wel onder 24.0.670). Er komen zelfs niet eens 60 rijen binnen uit de eerste pagina. De laatste fase is:

itgenboe154
DataRetrieval
Start yielding data.

Dit treedt op bij 1 specifieke omgeving. Een voorbeeld is request ID 0HNC8ID9773BA:00000003 (URL /pbi_acme_ma/odata4/ExactOnlineREST.Financial.GLAccountClassificationMappings@eol?$filter=%28Division%20eq%203361081%20or%20Division%20eq%203366632%29%20and%20GLSchemeCode%20eq%20%271%27&$select=ID%2CClassification%2CClassificationCode%2CClassificationDescription%2CGLAccount%2CGLSchemeCode&$top=1000)

Bij gedetailleerde analyse blijkt dat het SQL-statement de volgende foutmelding veroorzaakt:

itgensql260
The boolean value is non-nullable.

Deze foutmelding komt echter niet door in de verwerking. Ook is er geen boolean aanwezig in de query.

Na itgenpmr081 treden telkens afwisselend itgentut006 en itgentut005 op met telkens oplopende tijden tussen die acties, maar er wordt geen sessie I/O naar Exact Online gedaan.

Hetzelfde probleem met blijven hangen treedt op met (verzoek 0HNC8ID9773BB:00000003):

select t.[Timestamp], t.[Code], t.[Description], t.[ID], t.[Name], t.[Parent], t.[Division]
from   ExactOnlineREST.Sync.SyncGLClassifications@eol t
where  Division in (:w1, :w2)
limit  1000

De status op https://status.invantive.com geeft alles groen aan.

Het probleem is reproduceerbaar via:

select division
from   exactonlinerest..journals
where  division in (120, 121, 122)

of via bijvoorbeeld:

select division
from   exactonlinerest..journals
where  division = 120

waarbij de divisiecodes tussen 120 en 122 geen van allen voorkomen in de lijst van beschikbare divisies / partities.

Beide queries eindigen niet in de versie 24.0.673 tot/met 24.0.678.

Workaround

In de getoonde query worden de divisiecodes 3361081 en 3366632 gebruikt. Op beide divisies heeft de betrokken Exact Online-gebruiker geen toegang en/of via het use-statement zijn die niet meer beschikbaar.

Het is niet met 100% zekerheid te zeggen doordat de gegevens (bewust) niet toegankelijk zijn, maar de datacontainer met ID #7857 heeft in ieder geval maar 1 partitie, terwijl er specifiek twee worden opgevraagd. Mogelijk zijn de queries die blijven hangen oorspronkelijk gemaakt voor een rapport voor een andere Exact Online-omgeving waarin de divisiecodes 3361081 en 3366632.

Advies is om de gebruikte filters te controleren.

Oorzaak

De oorzaak is gelegen in een verbetering om de grote storing met de vrijgave van locks te verbeteren zoals beschreven in:

Deze verbetering in versie 24.0.673 gebruikte ook als er 0 of 1 partities van toepassing zijn de parallelle verwerking om de vrijgave van locks te verbeteren.

Echter, er kunnen 0 partities geselecteerd zijn. Bijvoorbeeld door het gebruik van een where-clause met ongeldige waarden in combinatie met de prestatieverbeteringen voor parallelle verwerking van partities (zie Prestatieverbeteringen Twinfield SQL driver).

De query zal in dit specifieke scenario nooit starten door een latent aanwezige bug in de parallelle verwerking.

Dit probleem kan voor zover bekend uitsluitend in Exact Online (OData) en Twinfield (SOAP) optreden. Voor zover bekend is dit probleem tot dusver bij geen andere gebruiker opgetreden.

Oplossing

In versie 24.0.679 is dit probleem opgelost. De parallelle verwerking van 0 partities is nu ook mogelijk, met als verwachte uitkomst 0 rijen in plaats van een eeuwigdurende uitvoering.

Versie 24.0.679 is inmiddels in productie genomen op Invantive Cloud.

Deze vraag is automatisch gesloten na 1 week inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.