Unplanned
Last Updated: 26 Apr 2024 08:37 by ADMIN
Sebastiaan
Created on: 05 Mar 2023 17:04
Category: PdfProcessing
Type: Bug Report
1
PdfProcessing: FontsRepository "System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access"

When calling a PDF export in a high-concurrency environment the internal state can get corrupted because it uses a non-thread safe collection internally.

Sample code:

void WriteToPdf(RadFlowDocument document, Stream outputStream) {

   PdfFormatProvider pdfWriter = new() {};

   pdfWriter.Export(document, outputStream);
}

When calling it like this:

Parallel.ForEachAsync(listOfDocuments, (document, _) => {
   WriteToPdf(document, Stream.Null);
});

An exception may occur:

System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at Telerik.Windows.Documents.Fixed.Model.Fonts.FontsRepository.TryCreateFont(FontFamily fontFamily, FontStyle fontStyle, FontWeight fontWeight, FontBase& font)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Utils.Extensions.CopyPropertiesFrom(CharacterProperties fixedProperties, PdfExportContext context, CharacterProperties properties)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.CreateListLevel(ListLevel flowLevel)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.CreateList(List flowList)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.ExportDocument(RadFlowDocument document, RadFixedDocumentEditor editor)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.ExportInternal()
   at Telerik.Windows.Documents.Common.FormatProviders.FormatProviderBase`1.Export(T document, Stream output)
   at xxxxx.Application.Common.PdfGeneration.PdfWriter.WriteToPdf(RadFlowDocument document, Stream outputStream) 

The state is then corrupted forever, until the application is restarted.

Realistic scenario where this is also reproduced: Web application that generates PDFs and is called concurrently.

 

15 comments
ADMIN
Todor
Posted on: 26 Apr 2024 08:37

Hi John,

With .NET 8 you may use only the Telerik Reporting engine with the Skia Sharp graphics engine on Linux and Mac.

Our recommendation is to wait for the new version 2024 Q2 scheduled for release on May 15th, 2024. Along with the fix of the discussed problem, we will provide performance improvements for the Skia engine.

Regards,
Todor
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

John
Posted on: 18 Apr 2024 15:38

Hello Ivan,

Is there a prior Reporting release which will work with .Net 8 in a high concurrency docker deployment?  As we updated all of our assemblies in multiple repos to .Net 8 we're currently unable to deploy any fixes required to those reports without getting a number of pipeline issues

Regards

John

ADMIN
Ivan Ivanov
Posted on: 18 Apr 2024 15:29

Hello John,

I can confirm that the Reporting issue will be resolved with our next official release (mid May).

Regards,
Ivan Ivanov
Progress Telerik

A brand new ThemeBuilder course was just added to the Virtual Classroom. The training course was designed to help you get started with ThemeBuilder for styling Telerik and Kendo UI components for your applications. You can check it out at https://learn.telerik.com
ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 18 Apr 2024 15:16

Hi, John,

Public bug reports, submitted on your behalf, are also available in your Telerik account. Please have a look at the Ticket ID: 1649227.

Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

John
Posted on: 18 Apr 2024 15:05

Thank you Dess - It would've been useful to add it to my account.

ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 18 Apr 2024 14:56

Hello, John,

I am sorry to hear that you are facing any difficulties with the Telerik Reporting product. However, since this is the public feedback portal for the Document Processing product, I have submitted a new public bug report on your behalf in the respective portal related to the Reporting product. Here is the feedback item for your reference: System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access

Feel free to continue the communication there. Thus, the knowledgeable engineers for the product would gladly assist you. Thank you for your understanding.

Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

John
Posted on: 18 Apr 2024 14:39

I exactly the same problem with the current version in a Linux container using 2024.1.30 and 18.0.24.305 version of reporting.   I only get this when I'm attempting to produce multiple reports at the same time.  It's the same issue regardless of whether it's running as a hosted web service or if I'm running as a server based blazor app.

DockerBlazorApp Error: 0 : An error has occurred while rendering the report: System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
   at Telerik.Drawing.SKIA.Text.FontMapper.LoadPrivateFont(SKTypeface typeface, String familyName)
   at Telerik.Drawing.Skia.Graphics.MeasureTextBlock(String text, Single widthConstraint, Single heightConstraint, StringFormatBase stringFormat, IFont font)
   at Telerik.Drawing.Skia.Graphics.MeasureString(String text, IFont font, SizeF layoutArea, StringFormatBase stringFormat, Int32& charactersFitted, Int32& linesFilled)
   at Telerik.Reporting.Processing.WindowsTextMeasureProvider.MeasureString(IGraphics graphics, String text, GdiFontInfo fontInfo, SizeF layoutArea, StringFormatBase stringFormat, Int32& charactersFitted, Int32& linesFilled)
   at Telerik.Reporting.Processing.MeasureContext.MeasureString(String text, IFont font, SizeF layoutArea, TextFormat textFormat, Int32& charactersFitted, Int32& linesFilled)
   at Telerik.Reporting.Processing.TextRenderer.MeasureText(IMeasureContext context, String text, IFont font, RectangleF layoutRectangle, TextFormat textFormat, Boolean multiline, Int32& charactersFitted)
   at Telerik.Reporting.Processing.TextBoxUtil.MeasureTextContainer(ITextContainer textContainer, RectangleF layoutBounds, IMeasureContext context)
   at Telerik.Reporting.Processing.TextBox.MeasureItem(IMeasureContext context, SizeLU availableClientSize, Boolean canGrow)
   at Telerik.Reporting.Processing.TextBox.MeasureItem(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.TextBox.MeasureContent(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.AbsolutePositionLayout.MeasureChildItems(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.AbsolutePositionLayout.MeasureContent(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.ReportSectionBase.MeasureContent(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.PageSection.MeasureContent(IMeasureContext context, SizeLU availableClientSize)
   at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize)
   at Telerik.Reporting.Paging.PageCompositionBase.MeasurePageSection(PageSection section)
   at Telerik.Reporting.Paging.PageCompositionBase.ProcessPageSectionsForPaging()
   at Telerik.Reporting.Paging.PageCompositionBase.MoveToNextPageArea()
   at Telerik.Reporting.Paging.PageCompositionBase.NextVerticalPage()
   at Telerik.Reporting.Paging.PageCompositionBase.CreatePages()
   at Telerik.Reporting.Paging.PagerBase.Telerik.Reporting.Paging.IPager.CreatePages(IPageHandler handler, LayoutElement root)
   at Telerik.Reporting.BaseRendering.RenderingExtensionBase.Render(LayoutElement root, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback, PageSettings pageSettings


Dmytro
Posted on: 21 Mar 2024 07:45
Thanks, Dess
ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 20 Mar 2024 14:11

Hi, Dmytro,

Since this feedback portal is related to the Telerik Document Processing product, I have created a new support ticket on your behalf with the correct product - Telerik Reporting. You can find the ticket (ID: 1645726) in your Telerik account. Thus, the Reporting support engineers would gladly assist you.

Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Dmytro
Posted on: 20 Mar 2024 14:05
Upon further investigation, we saw this exact issue on 2023-10-21, using whatever was the latest version at that moment. So, this is an old problem. It just bubbles up rarely, when one is extremely unlucky with timing of parallel rendering
Dmytro
Posted on: 20 Mar 2024 14:00
Could this have been re-introduced by 2024 Q1? We do not seem to have this exception before the update
Dmytro
Posted on: 20 Mar 2024 13:35

We experience a very similar issue. High-concurrent environment, Linux in Docker latest Telerik Reporting (2024 Q1), non-standard fonts are installed in Docker and referenced in the report designer. Sometimes we get this exception:

at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
at Telerik.Drawing.SKIA.Text.FontMapper.LoadPrivateFont(SKTypeface typeface, String familyName) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Drawing.Skia\Text\FontMapper.cs:line 77
at Telerik.Drawing.Skia.Graphics.MeasureTextBlock(String text, Single widthConstraint, Single heightConstraint, StringFormatBase stringFormat, IFont font) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Drawing.Skia\Graphics.cs:line 841
at Telerik.Drawing.Skia.Graphics.MeasureString(String text, IFont font, SizeF layoutArea, StringFormatBase stringFormat, Int32& charactersFitted, Int32& linesFilled) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Drawing.Skia\Graphics.cs:line 701
at Telerik.Reporting.Processing.WindowsTextMeasureProvider.MeasureString(IGraphics graphics, String text, GdiFontInfo fontInfo, SizeF layoutArea, StringFormatBase stringFormat, Int32& charactersFitted, Int32& linesFilled) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ITextMeasureProvider.cs:line 15
at Telerik.Reporting.Processing.MeasureContext.MeasureString(String text, IFont font, SizeF layoutArea, TextFormat textFormat, Int32& charactersFitted, Int32& linesFilled) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\MeasureContext.cs:line 144
at Telerik.Reporting.Processing.TextRenderer.MeasureText(IMeasureContext context, String text, IFont font, RectangleF layoutRectangle, TextFormat textFormat, Boolean multiline, Int32& charactersFitted) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\TextRenderer.cs:line 191
at Telerik.Reporting.Processing.TextBoxUtil.MeasureTextContainer(ITextContainer textContainer, RectangleF layoutBounds, IMeasureContext context) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\TextBoxUtil.cs:line 98
at Telerik.Reporting.Processing.TextBox.MeasureItem(IMeasureContext context, SizeLU availableClientSize, Boolean canGrow) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\TextBox.cs:line 204
at Telerik.Reporting.Processing.TextBox.MeasureItem(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\TextBox.cs:line 134
at Telerik.Reporting.Processing.TextBox.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\TextBox.cs:line 125    
at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 130    
at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\VisualElement.cs:line 347    
at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ProcessingElement.Layout.cs:line 16    
at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 107    
at Telerik.Reporting.Processing.Table.<>c__DisplayClass70_0.<MeasureDataItemContent>b__2(ITableCell cell) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\Table\Table.Layout.cs:line 42    
at Telerik.Reporting.Processing.Table.ForEachCell(Action`1 action) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\Table\Table.Layout.cs:line 25    
at Telerik.Reporting.Processing.Table.MeasureDataItemContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\Table\Table.Layout.cs:line 40
at Telerik.Reporting.Processing.DataItem.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\DataItem.cs:line 153    
at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 130    
at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\VisualElement.cs:line 347    
at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ProcessingElement.Layout.cs:line 16    
at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 107    
at Telerik.Reporting.Processing.AbsolutePositionLayout.MeasureChildItems(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\AbsolutePositionLayout.cs:line 296    
at Telerik.Reporting.Processing.AbsolutePositionLayout.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\AbsolutePositionLayout.cs:line 43    
at Telerik.Reporting.Processing.ReportSectionBase.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ReportSectionBase.cs:line 165    
at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 130    
at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\VisualElement.cs:line 347    
at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ProcessingElement.Layout.cs:line 16    
at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 107    
at Telerik.Reporting.Processing.StackLayout.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\StackLayout.cs:line 29    
at Telerik.Reporting.Processing.Group.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\Group.cs:line 204    
at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 130    
at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\VisualElement.cs:line 347    
at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ProcessingElement.Layout.cs:line 16    
at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 107    
at Telerik.Reporting.Processing.StackLayout.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\StackLayout.cs:line 29    
at Telerik.Reporting.Processing.Report.MeasureContent(IMeasureContext context, SizeLU availableClientSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\Report.Layout.cs:line 41    
at Telerik.Reporting.Processing.LayoutElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 130    
at Telerik.Reporting.Processing.VisualElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\VisualElement.cs:line 347    
at Telerik.Reporting.Processing.ProcessingElement.MeasureCore(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\ProcessingElement.Layout.cs:line 16    
at Telerik.Reporting.Processing.LayoutElement.Measure(IMeasureContext context, SizeLU availableSize) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing\LayoutElement.cs:line 107    
at Telerik.Reporting.Paging.PhysicalPageLayout.PhysicalPageMeasurement.MeasureRoot(LayoutElement root, IMeasureContext measureContext, PageSettings pageSettings) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Paging\PhysicalPageLayout\PhysicalPageMeasurement.cs:line 24    
at Telerik.Reporting.BaseRendering.RenderingExtensionBase.MeasureRootCore(LayoutElement root, PageSettings pageSettings) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\BaseRendering\RenderingExtensionBase.cs:line 46    
at Telerik.Reporting.BaseRendering.RenderingExtensionBase.Render(LayoutElement root, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback, PageSettings pageSettings) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\BaseRendering\RenderingExtensionBase.cs:line 89    
at Telerik.Reporting.BaseRendering.RenderingExtensionBase.Render(Report report, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\BaseRendering\RenderingExtensionBase.cs:line 55    
at Telerik.Reporting.Processing.ReportProcessor.CountPages(IList`1 reports, IRenderingContext renderingContext, Hashtable deviceInfo, ExtensionInfo extensionInfo) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.CountPages.cs:line 55    
at Telerik.Reporting.Processing.ReportProcessor.RenderCore(ExtensionInfo extensionInfo, IList`1 processingReports, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 314    
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRender(String format, ReportSource reportSource, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 477    
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRenderStateless(String format, ReportSource reportSource, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 440    
at Telerik.Reporting.Processing.ReportProcessor.<>c__DisplayClass46_0.<RenderReport>b__0(SingleStreamManager sm) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 109
at Telerik.Reporting.Processing.ReportProcessor.RenderReportSafe(Func`2 renderCallback, String format, IRenderingContext renderingContext) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 217    
at Telerik.Reporting.Processing.ReportProcessor.RenderReport(String format, ReportSource reportSource, Hashtable deviceInfo, CancellationToken cancellationToken) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 108    
at Telerik.Reporting.Processing.ReportProcessor.RenderReport(String format, ReportSource reportSource, Hashtable deviceInfo) in D:\a\reporting\reporting\reporting\Source\Code\Telerik.Reporting\Processing.ReportProcessor\ReportProcessor.RenderReport.cs:line 88    

at Keatech.Reporting.TelerikCommon.ReportGeneratorBase`3.RenderPdf(TParameters parameters, TData data, CultureInfo culture, Timezone timezone) in C:\s\Reporting\Keatech.Reporting.TelerikCommon\ReportGeneratorBase.cs:line 79    

This is clearly a race condition. Please fix this it as it causes a lot of problems in our environment and we have to limit our worker to generate 1 report at a day which leads to server under-utilization and increased report generation latency for our users.

 

ADMIN
Dimitar
Posted on: 14 Mar 2023 09:00

Hello Sebastiaan,

I have extended the project and the test file but still I am not able to reproduce this. Can you please check the project and use your file in order to confirm that this is reproducible or I am missing something?

In addition, are you registering fonts manually?  Can you send us the entire code that concerns this? 

Thank you in advance for your patience and cooperation. 

Regards,
Dimitar
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

Attached Files:
Sebastiaan
Posted on: 10 Mar 2023 07:50
Make sure you have a large .docx that uses different embedded fonts. As it is a concurrency issue, it can happen sporadically.
ADMIN
Dimitar
Posted on: 07 Mar 2023 09:37

Hello Sebastiaan,

Seems to work on my side, I have attached my test project could you please check it and let me know if I am missing something? 

I am looking forward to your reply.

Regards,
Dimitar
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Attached Files: