ionBiz refresh geeft error: An existing connection was forcibly closed by the remote host

De volgende foutmelding treedt op:

An error occurred while processing the data in the dataset.
Refresh failed:
REPORT has failed to refresh.
Failure details: The last refresh attempt failed because of an internal service error.
This is usually a transient issue.
If you try again later and still see this message, contact support.
{“error”:{“code”:“DM_GWPipeline_Gateway_MashupDataAccessError”,“pbi.error”:{“code”:“DM_GWPipeline_Gateway_MashupDataAccessError”,“parameters”:{},“details”:[{“code”:“DM_ErrorDetailNameCode_UnderlyingErrorCode”,“detail”:{“type”:1,“value”:“-2147467259”}},{“code”:“DM_ErrorDetailNameCode_UnderlyingErrorMessage”,“detail”:{“type”:1,“value”:“OData: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.”}},{“code”:“DM_ErrorDetailNameCode_UnderlyingHResult”,“detail”:{“type”:1,“value”:“-2147467259”}},{“code”:“Microsoft.Data.Mashup.ValueError.DataSourceKind”,“detail”:{“type”:1,“value”:“OData”}},{“code”:“Microsoft.Data.Mashup.ValueError.DataSourcePath”,“detail”:{“type”:1,“value”:“https://bridge-online.cloud/acme-ionbiz-1/odata4/ionBIZ.DEFAULT.Tasks@ibz”}},{“code”:“Microsoft.Data.Mashup.ValueError.Reason”,“detail”:{“type”:1,“value”:“DataSource.Error”}}],“exceptionCulprit”:1}}} Table: Tasks.
Next refresh for REPORT is scheduled for July 20, 2023 2:00 UTC.

De opgenomen foutmelding is:

OData: Unable to read data from the transport connection:
An existing connection was forcibly closed by the remote host.

Het betreft hier een request met o.a. Invantive Bridge Online ID “8000004f-0002-e200-b63f-84710c7967bb” via HTTP/1.1 met URL:

/acme-ionbiz-1/odata4/ionBIZ.DEFAULT.Tasks@ibz?$filter=IsDeleted%20eq%20false&$select=Id%2CName%2CStartDate%2CEndDate%2CBaseline%2CStatusId%2CParentId%2CBillable%2CCreatorId%2CIsDeleted%2CHourlyRate%2CCreationDate%2CActive%2CSequence%2CProjectId%2CIsLeaf%2CBudgetType%2CProjectActivityId%2CProjectInvoiceId%2CDepartmentId%2CBaselineSalesTime%2CBaselineSalesCost%2CDailyRate%2CModifiedDate%2CProjectActivityTypeId%2CCurrentSalesTime%2CSequenceId%2CUsedBudgetPercent%2CNotifyProjectManager%2CNotifyProjectSupervisor%2CNotifyAccountManager&$top=1000

Deze opvragingen tussen 23:30 en 08:00 volgende van deze URL zijn:

  • start 02:15:11, einde 02:15:15, niet uit response cache, 1000 rijen ($top=1000), statuscode 200 (OK), request ID 8000008d-0006-f700-b63f-84710c7967bb
  • start 02:15:26, einde 02:15:28, niet uit response cache, 3894 rijen, statuscode 200 (OK), request ID 80000083-0000-dc00-b63f-84710c7967bb
  • start 02:21:18, einde 02:21:18, wel uit response cache, 3894 rijen, statuscode 200 (OK), request ID 8000004f-0002-e200-b63f-84710c7967bb
  • start 02:22:49, einde 02:22:49, wel uit response cache, 3894 rijen, statuscode 200 (OK), request ID 80000237-0006-fe00-b63f-84710c7967bb
  • start 02:23:09, einde 02:23:09, wel uit response cache, 3894 rijen, statuscode 200 (OK), request ID 8000017c-0006-f500-b63f-84710c7967bb

Elke download is kort en bevat weinig rijen. Zelfs zonder responsecache duurt het ophalen maar 4 seconden.

Een voorbeeld uit de interne registratie (met aantal vertrouwelijke delen verwijderd):

Advies is om gebruik te maken van Power BI Premium per User. Dit lost vaak dit soort rare issues op.

Bij test los vanuit Power BI Desktop bleek bij ContractLines uit ionBiz een 499 op te treden met code itgenboe242. Dit bleek uiteindelijk herleidbaar naar een foutmelding in een eerdere download. De query voor ContractLines haalde ook de query Contracts op. Deze query bevat talrijke afhankelijkheden, die niet allemaal eindigden cq. lang duurden.

Advies is om bij problemen de download URL (rechtsklik op het pad in de Bridge Online Monitoring Details) rechts aan te klikken en te openen in een nieuwe tab. Als dat lukt, dan ligt het probleem ergens in de Power BI rapportdefinitie.

Soms is het verstandig om bij complexe queries de resultaten los te berekenen als dataset.

Advies is om het omzetten naar losse en centraal gestuurde datasets te overwegen.