“Large message size” setting can impact the execution of map
We recently got a problem reported by our customer that the "large message size" configuration(in BizTalk group property settings)
Problem:
“Large message size” setting can impact the execution of map.
The scenario:
In the orchestration, the customer uses a mapping can split 1 input message into 2 output message, based on the value a node.
Illustration:
They define the mapping transform config like this, with destination as a inline schema of 2 message parts
Issue:
They encounter XLANG/s error (Invalid input/out document into/from the transform. Does not have a single root node.) at the Mapping, when the following test condition is reached:
The input message contain only 1 type of records, (e.g only A records, but no B records), AND
The input message size is larger than 100KB (e.g. we put a 102KB file)
And for message size condition, we found that it seems to be related to the “Large message size” setting at the BizTalk Group (Current is 100KB default).
e.g. If we change “Large message size” setting to 102KB, the 102KB file can be processed without error. However, a larger file e.g. 104KB cannot.
Currently a workaround is implementing the splitting operation by 2 separate Maps instead one single map. Then we did not hit issue for the same larger files after that.
XLANG error:
Log Name: Application
Source: XLANG/s
Date: 24/06/2015 16:55:25
Event ID: 10030
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer:
Description:
xlang/s engine event log entry: Uncaught exception (see the 'inner exception' below) has suspended an instance of service 'TestMapping.Orchestration.InlineSchemaMappingOrchestration(ebc6996c-4e09-9fd4-a153-a7b6d594756c)'.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 8524a1f6-32be-4335-8ba9-be6b2e3a56e3
Shape name: ConstructMessage_1
ShapeId: 9fb18f5f-0d34-4026-9135-b86cb96ff424
Exception thrown from: segment 1, progress 6
Inner exception: Error encountered while executing the transform TestMapping.Orchestration.InlineSchemaMapping.InlineMapping. Error:Invalid input/output document into/from the transform. Does not have a single root node..
Exception type: XTransformationFailureException
Source: Microsoft.XLANGs.Engine
Target Site: Void ShredXmlDocumentStream(System.IO.Stream, System.Object[], System.String, System.Xml.XmlDeclaration)
The following is a stack trace that identifies the location where the exception occured
at Microsoft.XLANGs.Core.Service.Transform.ShredXmlDocumentStream(Stream inputStream, Object[] outParams, String mapName, XmlDeclaration xmlDecl)
at Microsoft.XLANGs.Core.Service.ApplyStreamingTransform(Type mapRef, TransformMetaData trfMetaData, Object[] outParams, Stream[] inStreams, Boolean whitespaceCorrect)
at Microsoft.XLANGs.Core.Service.ApplyTransform(Type mapRef, Object[] outParams, Object[] inParams)
at TestMapping.Orchestration.InlineSchemaMappingOrchestration.segment1(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
Event Xml:
<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="XLANG/s" />
<EventID Qualifiers="0">10030</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2015-06-24T08:55:25.000000000Z" />
<EventRecordID>102400</EventRecordID>
<Channel>Application</Channel>
<Computer>ITDMWO86A.heh.net</Computer>
<Security />
</System>
<EventData>
<Data>xlang/s engine event log entry: Uncaught exception (see the 'inner exception' below) has suspended an instance of service 'TestMapping.Orchestration.InlineSchemaMappingOrchestration(ebc6996c-4e09-9fd4-a153-a7b6d594756c)'.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 8524a1f6-32be-4335-8ba9-be6b2e3a56e3
Shape name: ConstructMessage_1
ShapeId: 9fb18f5f-0d34-4026-9135-b86cb96ff424
Exception thrown from: segment 1, progress 6
Inner exception: Error encountered while executing the transform TestMapping.Orchestration.InlineSchemaMapping.InlineMapping. Error:Invalid input/output document into/from the transform. Does not have a single root node..
Exception type: XTransformationFailureException
Source: Microsoft.XLANGs.Engine
Target Site: Void ShredXmlDocumentStream(System.IO.Stream, System.Object[], System.String, System.Xml.XmlDeclaration)
The following is a stack trace that identifies the location where the exception occured
at Microsoft.XLANGs.Core.Service.Transform.ShredXmlDocumentStream(Stream inputStream, Object[] outParams, String mapName, XmlDeclaration xmlDecl)
at Microsoft.XLANGs.Core.Service.ApplyStreamingTransform(Type mapRef, TransformMetaData trfMetaData, Object[] outParams, Stream[] inStreams, Boolean whitespaceCorrect)
at Microsoft.XLANGs.Core.Service.ApplyTransform(Type mapRef, Object[] outParams, Object[] inParams)
at TestMapping.Orchestration.InlineSchemaMappingOrchestration.segment1(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
</Data>
</EventData>
</Event>
Analysis:
Based on research results so far, the problem seems to be related to different behavior between in-mempry transform and stream based transform. Also, the same type of splitting mapping is well used in old BizTalk 2006 R2.
If you meet the same issue, please consider the workaround by increasing "Large message size"/use separate maps. Or you can contact Microsoft for assistance.
Best regards,
WenJun Zhang