Important Announcement: End of Life for TMS on December 31, 2025. Read more here

TMS - Recovery - CascadeException - TranslationProviderThrewException

Symptoms/Context:

Task fails to Recovery with the following error messages :


CascadeException : TranslationProviderThrewException : Sdl.LanguagePlatform.TranslationMemoryApi


at ApplyTM/Preprocessing step :

at Sdl.LanguagePlatform.TranslationMemoryApi.Cascade`1.SearchTranslationUnitsMasked(SearchSettings settings, TranslationUnit[] translationUnits, Boolean[] mask) at Sdl.Tms.Ppt.TranslationSupport.CascadeApplyProcessor.Flush() at Sdl.Tms.Ppt.TranslationSupport.CascadeProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi.EventFiringBilingualProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.FileComplete() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.OnEndFile() at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.<ContinueScanning>b__2(ISdlXliffStreamContentHandler handler) at System.Collections.Generic.List`1.ForEach(Action`1 action) at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.ContinueScanning() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ContinueParsing() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.Parse() at Sdl.Tms.Ppt.PptBaseCore.CreateTargetXliff(PreprocessingWorkItem item, Boolean fullPreprocessing) at Sdl.Tms.Ppt.PptBaseCore.PreProcess(Int32 taskId, Boolean checkFormatPainting) at Sdl.Tms.Workflow.PreProcess.PreProcess.Execute() at Sdl.Tms.MessageProcessing.WorkerRequestProcessor.ExecuteMessage()]; Source = [Sdl.LanguagePlatform.TranslationMemoryApi]

 


at UpdateTM step :

at Sdl.Tms.Ppt.TranslationSupport.CascadeUpdateProcessor.Flush() at Sdl.Tms.Ppt.TranslationSupport.CascadeProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi.EventFiringBilingualProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.FileComplete() at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.FileComplete() at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.FileComplete() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.OnEndFile() at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.<ContinueScanning>b__2(ISdlXliffStreamContentHandler handler) at System.Collections.Generic.List`1.ForEach(Action`1 action) at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.ContinueScanning() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ContinueParsing() at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.ParseNext() at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.Parse() at Sdl.Tms.Ppt.TranslationSupport.TmHandler.UpdateTmSequence(ITmHandlerWorkItem item, IMultiFileConverter updateConverter) at Sdl.Tms.Ppt.PptBaseCore.UpdateTmSequence(Int32 taskId) at Sdl.Tms.Workflow.PreProcess.UpdateTM.Execute() at Sdl.Tms.MessageProcessing.WorkerRequestProcessor.ExecuteMessage() at Sdl.Tms.MessageProcessing.WorkerRequestProcessor.RunRequest()]; Source = [Sdl.Tms.Ppt]

Root Cause:

CascadeException (error in Studio TranslationProviderThrewException) comes from TM API when SDL TMS processing SDLXLIFF bilingual files either at Pre-processing or UpdateTM steps.

There are various reasons why CascadeException error is thrown. The following are known issues some of which are already fixed :

1 ) Tasks failing to recovery at ApplyTM : -

• due to duplicate tags applied to a target only segment from a TM - TMS-5211 , TMS-10259 (fixed in TMS 2011 SP6 CU1)
• due to target language not supported in Studio when Studio-style Analysis Statistics are enabled : - CRQ-4882
• due to target SDLXLIFF file failed to be copied to a target language folder - TMS-13321


2) Tasks failing to recovery at Update TM :

• due to a target segment containing either - tag only (a red bar in SDLX), a symbol-only (e.g. curly quotes) or a "0-width nonbreaking space" only target translation - CRQ-4644, TMS-11668
• due to target and source segments being empty – XLZ file format - CRQ-5408
• due to intermittent failure updating dbo.TMAttributeValues - TMS-5284 (fixed in TMS 2011 SP6)

Resolution:

Check and verify that the bilingual file in SDL TMS does not have any empty segments, tag only segments, symbol only segments. You can use Review > Verify in SDL Trados Studio

If the file fails to recovery at UpdateTM step, you can download the SDLXLIFF  or ITD file from the Recovery step and unconfirmed the affected segment, so it is not updated to a TM.
If the organization level setting Only Update Confirmed Segments in TM is disabled, then you can only push task to next step regardless of the error message. The update error is only thrown after TM Update is completed, but all other translations should be stored in TM.

TMS Debug logs should be inspected for the exact location of the segment causing the exception.
Exceptions at UpdateTM step is reported at the very end of the step operation and not after problematic string, so it is harder to locate offending segment.
 
Reference