Itgeneor364 Exact Online requires at least 9,5 minutes between each request for a new access token

Bij het vernieuwen bij een grote administratie lopen we tegen de volgende fout aan en stopt de sync.

11:05:36.454 Error itgeneor364: Exact Online requires at least 9,5 minutes between each request for a new access token.

The remote server returned an error: (400) Bad Request.
Please try again after 04-08-2024 11:05:43 (UTC) after waiting for 7 seconds.
https://start.exactonline.be/api/oauth2/token
11:05:38.455 System.Net.WebException
ValidationException
   at System.Net.HttpWebRequest.GetResponse()
   at Invantive.Data.Providers.Http.HttpBasedProvider.DoRequest(GlobalState owner, ExecutionOptions executionOptions, HttpWebRequest request, String url, ObjectDefinition objectDefinition, QueryObject queryObject, String partitionCode, String callSafeNameOverrule, String anonymizedPostText, Boolean allowRetryOnNoConnectionMade, Boolean allowRetryOnConnectionLoss, ParameterList parameters, Guid nativeCallUid, Boolean throwExceptionOnNonSuccessfulStatusCode, Object requestBody, Int64 timeoutInitialMs, Int64 timeoutMaxOnRetryMs, String resultCacheId, String publicQueryParameters, SqlExecutionStep sqlExecutionStep, ExecutionStatistics& executionStatistics, ODataErrorProcessingInstructions& oDataErrorProcessingInstructions)
11:05:38.456 itgendhb223: End program execution with exit code 3.
11:05:38.456 itgendhb068: Program finished on 8/4/2024 11:05:38 AM.
itgenpgm001: Application finished
Failed Data Hub job with exit code 0.**vetgedrukte tekst**

Advies is om de verwerking nogmaals uit te voeren.

Mocht het probleem vaker optreden, controleer dan dat er niet gelijktijdig of kort na elkaar meerdere jobs lopen met dezelfde combinatie van client ID en Exact Online user ID.

Al enkele dagen aan het proberen, is de enige sync die op dat moment loopt. Ook op verschillende tijdstippen al getest.

Analyse

Een analyse van het optreden van deze melding is gemaakt.

De aanbevolen wachttijd in de melding komt vanuit de Exact Online API-servers via de Reason-HTTP header. De achterliggende Exact Online foutmelding is:

{ "error":"access_denied","error_description":"Rate limit exceeded: access_token not expired" }

De melding met 7 seconden kon niet teruggevonden worden in het scherm Systeemberichten, maar de foutmelding komt over alle gebruikers heen circa tweemaal per maand voor.

De getoonde aanbevolen wachttijden zijn:

  • 0 seconden: 7
  • 1 seconden: 1
  • 40 seconden: 1
  • 45 seconden: 1
  • 326 seconden: 1

Echter, vrijwel alle foutmeldingen treden op sinds begin juli 2024. In de maanden ervoor waren er meerdere maanden zonder deze melding.

Het lijkt er op dat aan de Exact Online-zijde aanpassingen gedaan zijn, aangezien Data Hub op talrijke machines draait in redelijk vaste versies.

Er zal onderzocht worden of er iets langer gewacht kan worden met het vernieuwen van het access token, aangezien vrijwel alle meldingen die terug te vinden zijn uitkomen op 0 of 1 seconden.

Workaround

Voorlopig is het advies om de synchronisatie met de tijdsservers te controleren via Windows Time of NTP. Corrigeer eventuele afwijkingen.

Mocht dat niet lukken, dan is advies om te controleren dat job herstartbaar is en deze herhaaldelijk uit te voeren.

Daarnaast kunt u proberen om via de connection string de waarde van api-pre-expiry-refresh-sec te verlagen van 30 naar 15 seconden. Dit zal naar verwachting geen nadelen hebben. Naar verwachtingen zal enkel in massief parallelle omgevingen hierdoor de doorvoersnelheid met enkele procenten vertraagd kunnen worden.

Vanaf release 24.0.291 zal de standaardinstelling van 30 seconden voor Exact Online gewijzigd zijn. Deze release zal ergens komende week beschikbaar komen. Tot dan is advies om dit via api-pre-expiry-refresh-sec te sturen.

Dit draait op een Debian server momenteel, NTP is ingesteld en de sync is net terug gestart.

Waar vind ik de eventuele nieuwe releases?

Doorgaans zij de nieuwe releases te vinden via https://releasenotes.invantive.com/, maar er gaat iets niet goed met bijwerken.

De meest recente release is te vinden via de volgende links:

Voor Windows:

Voor Linux:

Ik heb de huidige installatie nu vervangen door de laatste versie, als ik nu ons replicatie script wil draaien krijg ik volgende fout:

./replicate_eo.sh: 15: /usr/local/bin/datahub: Exec format error
Failed Data Hub job with exit code 0.

Is hier nog een update over @forums?

We kunnen helaas geen ondersteuning leveren op de installatie. Zoals eerder aangegeven kan een eerdere release gebruikt worden, maar dan moet de instelling api-pre-expiry-refresh-sec ingesteld zijn via de connection string.

@forums ik zie dat u dat ARM versie voor linux heeft doorgestuurd, dit verklaard ons probleem. Kan u mij de link bezorgen voor X86 64-bit versie doorsturen?

Dat zou deze link moeten zijn: https://download.invantive.com/release/msi/Invantive+Data+Hub-linux-x64-net8.0-24.0.292.zip

Deze versie nu geïnstalleerd, maar krijgen nu de volgende fout:

root@invantive:~# ./replicate.sh
Unhandled exception. System.IO.FileNotFoundException: The configuration file 'appsettings.Production.json' was not found and is not optional. The expected physical path was '/root/appsettings.Production.json'.
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info)
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
   at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
   at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
   at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
   at Invantive.Basics.ConfigurationUtility.GetConfiguration(GlobalState owner, ExecutionOptions executionOptions, String[] args)
   at Invantive.Producer.Data.Hub.Program.Main(String[] args) in c:\smoke\ws-24.0\Invantive.Data.Hub\src\Invantive.Producer.Data.Hub\Program.cs:line 47
Aborted
Failed Data Hub job with exit code 0.

Deze foutmelding ontstaat omdat de configuratie voor Elastic APM ontbreekt; het inrichten hiervan vereist enige ondersteuning.

Advies is om de originele versie te blijven gebruiken en de connection string aan te passen zoals in een eerdere reactie vermeld:

Er zal een release komen met een aanpassing voor bovenstaande foutmelding, maar in verband met de frozen period zal dat op zijn vroegst einde augustus 2024 zijn.

@forums is hier al een update over?

Advies is om de originele versie te blijven gebruiken en de connection string aan te passen zoals in een eerdere reactie vermeld.

Er zal geen nieuwe release op korte termijn beschikbaar komen met aanpassingen voor eenvoudiger ElasticSearch-configuratie.

Waar kan ik deze instelling dan toepassen? Het probleem met APM is opgelost door een backup terug te zetten.

De instelling api-pre-expiry-refresh-sec kan toegevoegd worden aan de connection string. Op Data Hub komt deze uit het gebruikte settings*.xml-bestand. Zie:

Graag een oplossing, dit sleept al meer als een maand aan ondertussen.

Kunt u (na vervanging vertrouwelijke gegevens door ***) de gebruikte settings*.xml toevoegen?