Datascope API - Cannot create a extractioncontext and fetch rows

rayalama
rayalama Newcomer

While trying to fetch data using datascope API - post establishing the ExtractionContext and trying to extract rows it failed.

Reuters.extractionsContext.Extract(extractionRequest) - did not return any rows as well ran for almost more than 4 hours and automatically it got cancelled.

Exceptions details below:


ExceptionAssembly
ThomsonReuters.Dss.RestApi.Client,
Version=10.6.714.0, Culture=neutral, PublicKeyToken=c1b530b4d66eacdd


ExceptionType
System.Threading.Tasks.TaskCanceledException


ExceptionGroup
System.Threading.Tasks.TaskCanceledException
at
ThomsonReuters.Dss.Api.Core.HttpOData.Http.HttpClientAdapter+<HandleEventNotifications>d__11.MoveNext


ExceptionCount
1


ExceptionMethod
ThomsonReuters.Dss.Api.Core.HttpOData.Http.HttpClientAdapter+<HandleEventNotifications>d__11.MoveNext


ExceptionHasStack
True


ExceptionMessage
A
task was canceled.

Can ome one please let me know what will be right way to handle these exceptions. is there a way to control the timeout for the same.

Best Answer

  • Jirapongse
    Jirapongse ✭✭✭✭✭
    Answer ✓

    Reuters.extractionsContext.Extract(extractionRequest) is synchronous. It returns when the extraction is completed. However, if the exception happens during this call, it will not return. However, the extraction may still be processed on the server and the application is unable to cancel or track down the status of the extraction. The things which the application can do are:

    • Query all active jobs on the server to find the requested monitor URL. Then use this URL to cancel and continue tracking its status
    • Or, send another extraction request to the server. However, this can create an additional workload on the server

    To avoid this, I suggest to use a Reuters.extractionsContext.ExtractStart(extractionRequest) method instead. The "Start" method returns an IAsyncJob which in turn can be used to track the progress or cancel the extraction. Therefore, when the problem happens, the application can decide to cancel the job or keep monitoring its status.

    For more information, please refer to Key Mechanisms in the Async -> Jobs section.