-
Notifications
You must be signed in to change notification settings - Fork 81
Description
Current Behavior
Introduced somewhere after 9.1.0-20250406.172201
or 9.1.0 release. Ladybug and logs show pipeline ending with the correct return message. So far I can see this behavior happening only in flows that involve returning large documents/large base64 in the return message. Only hint I could find in logging is that in the working ff version the cxf.MessageProvider - building multipart message with MultipartXmlSessionKey [null]
is executed before util.StreamCaptureUtils - 2703 bytes available at close & util.StreamCaptureUtils - -1 bytes available at close
, while in the non-working ff version it is executed after. Also in the working ff version both log entries show -1 bytes
, while the non working ff version has 2703 bytes
for the first util.StreamCaptureUtils
logstatement.
Expected Behavior
Should return my message instead of empty Soap envelope
Environment Information
9.2.0-20250512.173626
Steps To Reproduce
In the provided configuration, the SenderPipe called http:__www.egem.nl_StUF_sector_zkn_0310_geefZaakdocumentbewerken_Di02
is the flow that eventually results in the empty Soap response. So likely the issue is somewhere between the return of that sender and the provided parent adapter returning the Soap response.
Configuration
<Module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../FrankConfig.xsd">
<Adapter name="SoapEndpointRouter_VrijeBerichten"
active="${SoapEndpointRouter_VrijeBerichten.Active}"
description="">
<!--
Never use "originalMessage" in this adapter. Use "SafeOriginalMessage" instead.
This is due "originalMessage" potentially containing very large document base64.
"SafeOriginalMessage" has the base64 already stored to disk and removed from the message.
-->
<Receiver name="SoapEndpointRouter_VrijeBerichten">
<WebServiceListener name="SoapEndpointRouter_VrijeBerichten" address="${zaakbrug.soap.vrije-berichten.endpoint}" soap="false"/>
</Receiver>
<Pipeline>
<Exits>
<Exit name="EXIT" state="SUCCESS"/>
<Exit name="EXCEPTION" state="ERROR"/>
</Exits>
<!--
Dont touch the input message before this pipe. Especially no xslt/xpath.
It can potentially contain very large document base64 still.
This pipe stores it to disk and removes it from the message.
-->
<EchoPipe
name="StoreInhoud"
elementToMove="inhoud"
removeCompactMsgNamespaces="false"
>
<Forward name="success" path="CheckInputDocumentObjectCount" />
</EchoPipe>
<!--
In the rare case of the new base64 AND the old base64 of a document being present during an updateDocument action, the elementsToMove will make a
ref_inhoud# sessionKey for both "inhoud" elements. Normally there is only one because there is only 1 inhoud element with the NEW base64.
Only in this scenario "ref_inhoud" will be the OLD base64 and "ref_inhoud2" will be the NEW base64. We are only interested in the NEW base64,
so we are overwriting the "ref_inhoud" sessionkey with the content of "ref_inhoud2" and replace "{sessionKey:ref_inhoud2} with "{sessionKey:ref_inhoud}".
-->
<XmlIfPipe name="CheckInputDocumentObjectCount"
xpathExpression="count(//*:inhoud) = 2"
preserveInput="true"
>
<Forward name="then" path="OverwriteRefInhoudWithRefInhoud2"/>
<Forward name="else" path="ReplaceInhoudRefWithBase64EncodedRef"/>
</XmlIfPipe>
<PutInSessionPipe
name="OverwriteRefInhoudWithRefInhoud2"
>
<Param name="ref_inhoud" sessionKey="ref_inhoud2" />
<Forward name="success" path="ReplaceInhoudRefWithBase64EncodedRef"/>
<Forward name="exception" path="BackEndError"/>
</PutInSessionPipe>
<ReplacerPipe
name="ReplaceInhoudRefWithBase64EncodedRef"
storeResultInSessionKey="SafeOriginalMessage"
find="{sessionKey:ref_inhoud}"
replace="e3Nlc3Npb25LZXk6cmVmX2luaG91ZH0="
>
<Forward name="success" path="ReplaceInhoudRef2WithBase64EncodedRef" />
</ReplacerPipe>
<ReplacerPipe
name="ReplaceInhoudRef2WithBase64EncodedRef"
storeResultInSessionKey="SafeOriginalMessage"
find="{sessionKey:ref_inhoud2}"
replace="e3Nlc3Npb25LZXk6cmVmX2luaG91ZH0="
>
<Forward name="success" path="ValidateInput" />
</ReplacerPipe>
<WsdlXmlValidatorPipe
name="ValidateInput"
wsdl="Common/xsd/Zaak_DocumentServices_1_1_02/zkn0310/zs-dms/zkn0310_vrijeBerichten_zs-dms.wsdl"
outputFormat="XML"
ignoreUnknownNamespaces="true"
autoFormat="false"
>
<Forward name="success" path="UnwrapOriginalMessage"/>
<Forward name="failure" path="WsdlValidationSoftFailForwarder"/>
</WsdlXmlValidatorPipe>
<XmlSwitchPipe
name="WsdlValidationSoftFailForwarder"
xpathExpression="$SoftFail = true()"
>
<Param name="SoftFail" value="${zaakbrug.soap.vrije-berichten.validation-soft-fail}" type="BOOLEAN"/>
<Forward name="true" path="UnwrapOriginalMessage" />
<Forward name="false" path="InvalidXml" />
</XmlSwitchPipe>
<SoapWrapperPipe
name="UnwrapOriginalMessage"
direction="UNWRAP"
removeOutputNamespaces="true"
>
<Forward name="success" path="StoreResponeContextSessionKeys"/>
<Forward name="exception" path="BackEndError"/>
</SoapWrapperPipe>
<PutInSessionPipe
name="StoreResponeContextSessionKeys"
>
<Param name="Stuurgegevens" xpathExpression="/*/stuurgegevens" defaultValue="<stuurgegevens/>" type="DOMDOC" />
<Param name="Parameters" xpathExpression="/*/parameters" defaultValue="<parameters/>" type="DOMDOC" />
<Forward name="success" path="LegalizeSoapActionForPipeName"/>
<Forward name="exception" path="BackEndError"/>
</PutInSessionPipe>
<XsltPipe
name="LegalizeSoapActionForPipeName"
preserveInput="true"
xpathExpression="replace($Action, '/', '_')"
storeResultInSessionKey="LegalizedSoapAction"
>
<Param name="Action" sessionKey="SOAPAction"/>
<Forward name="success" path="checkObjectCount"/>
<Forward name="exception" path="BackEndError"/>
</XsltPipe>
<XmlIfPipe name="checkObjectCount" xpathExpression="count(/*/edcLk02/object)=2">
<Forward name="then" path="StoreZdsWordtInformatieObject1" />
<Forward name="else" path="StoreZdsWordtInformatieObject2" />
</XmlIfPipe>
<PutInSessionPipe name="StoreZdsWordtInformatieObject1">
<Param name="ZdsWordtInformatieObject" xpathExpression="/*/edcLk02/object[2]" defaultValue="<object/>" type="DOMDOC" />
<Forward name="success" path="ForwardBySoapActionSwitch" />
</PutInSessionPipe>
<PutInSessionPipe name="StoreZdsWordtInformatieObject2">
<Param name="ZdsWordtInformatieObject" xpathExpression="/*/edcLk02/object[1]" defaultValue="<object/>" type="DOMDOC" />
<Forward name="success" path="ForwardBySoapActionSwitch" />
</PutInSessionPipe>
<XmlSwitchPipe
name="ForwardBySoapActionSwitch"
forwardNameSessionKey="LegalizedSoapAction"
notFoundForwardName="UnsupportedSoapActionError"
/>
<!-- GenereerZaakIdentificatie_Di02 -->
<SenderPipe
name="http:__www.egem.nl_StUF_sector_zkn_0310_genereerZaakIdentificatie_Di02"
storeResultInSessionKey="Identificatie"
>
<IbisLocalSender
name="GenereerZaakIdentificatie_Di02LocalSender"
javaListener="GenereerIdentificatieEmulator"
returnedSessionKeys="Error">
<Param name="IdentificatieType" value="ZaakIdentificatie"/>
</IbisLocalSender>
<Forward name="success" path="WrapGenereerZaakIdentificatie_Du02Response" />
<Forward name="exception" path="BackEndError" />
</SenderPipe>
<!-- GenereerDocumentIdentificatie_Di02 -->
<SenderPipe
name="http:__www.egem.nl_StUF_sector_zkn_0310_genereerDocumentIdentificatie_Di02"
storeResultInSessionKey="Identificatie"
>
<IbisLocalSender
name="GenereerDocumentIdentificatie_Di02LocalSender"
javaListener="GenereerIdentificatieEmulator"
returnedSessionKeys="Error">
<Param name="IdentificatieType" value="DocumentIdentificatie"/>
</IbisLocalSender>
<Forward name="success" path="WrapGenereerDocumentIdentificatie_Di02Response" />
<Forward name="exception" path="BackEndError" />
</SenderPipe>
<!-- GeefZaakdocumentbewerken_Di02 -->
<SenderPipe
name="http:__www.egem.nl_StUF_sector_zkn_0310_geefZaakdocumentbewerken_Di02"
storeResultInSessionKey="ZdsZaakDocumentInhoud"
>
<IbisLocalSender
name="GeefZaakdocumentbewerken_Di02LocalSender"
returnedSessionKeys="ZgwLock,ref_inhoud,Error"
javaListener="GeefZaakdocumentbewerken_Di02"
>
<Param name="DocumentIdentificatie" xpathExpression="/*/edcLv01/gelijk/identificatie" type="STRING" />
</IbisLocalSender>
<Forward name="success" path="WrapGeefZaakdocumentbewerken_Di02Response"/>
<Forward name="exception" path="EXCEPTION" />
</SenderPipe>
<!-- CancelCheckout_Di02 -->
<SenderPipe
name="http:__www.egem.nl_StUF_sector_zkn_0310_cancelCheckout_Di02"
>
<IbisLocalSender
name="CancelCheckout_Di02LocalSender"
javaListener="CancelCheckOutZaakDocument_Di02"
returnedSessionKeys="Error">
<Param name="DocumentIdentificatie" xpathExpression="/*/document/identificatie" type="STRING" />
<Param name="Lock" xpathExpression="/*/parameters/checkedOutId" type="STRING" />
</IbisLocalSender>
<Forward name="success" path="WrapCheckOutZaakDocument_Di02Response"/>
<Forward name="exception" path="EXCEPTION" />
</SenderPipe>
<!-- UpdateZaakdocument_Di02 -->
<SenderPipe
name="http:__www.egem.nl_StUF_sector_zkn_0310_updateZaakdocument_Di02"
>
<IbisLocalSender
name="UpdateZaakdocument_Di02LocalSender"
javaListener="UpdateZaakDocument_Di02"
returnedSessionKeys="Error">
<Param name="ZdsWordtInformatieObject" sessionKey="ZdsWordtInformatieObject" />
<Param name="Lock" xpathExpression="/*/parameters/checkedOutId" type="STRING" />
<Param name="ref_inhoud" sessionKey="ref_inhoud" />
</IbisLocalSender>
<Forward name="success" path="WrapUpdateZaakDocument_Di02Response"/>
<Forward name="exception" path="EXCEPTION" />
</SenderPipe>
<SoapWrapperPipe
name="WrapGenereerZaakIdentificatie_Du02Response"
getInputFromFixedValue="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateGenereerZaakIdentificatie_Du02Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<Param name="Identificatie" sessionKey="Identificatie" type="STRING" />
<Forward name="success" path="EXIT"/>
</SoapWrapperPipe>
<SoapWrapperPipe
name="WrapGenereerDocumentIdentificatie_Di02Response"
getInputFromFixedValue="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateGenereerDocumentIdentificatie_Du02Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<Param name="Identificatie" sessionKey="Identificatie" type="STRING" />
<Forward name="success" path="EXIT"/>
</SoapWrapperPipe>
<SoapWrapperPipe
name="WrapGeefZaakdocumentbewerken_Di02Response"
getInputFromFixedValue="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateDu02Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<!-- <Param name="Parameters" sessionKey="Parameters" type="DOMDOC"/> -->
<Param name="ZgwLock" sessionKey="ZgwLock" type="DOMDOC" />
<Param name="ZdsZaakDocumentInhoud" sessionKey="ZdsZaakDocumentInhoud" type="DOMDOC" />
<Forward name="success" path="ReplaceBase64EncodedRefWithInhoudRef"/>
</SoapWrapperPipe>
<ReplacerPipe
name="ReplaceBase64EncodedRefWithInhoudRef"
find="e3Nlc3Npb25LZXk6cmVmX2luaG91ZH0="
replace="?{ref_inhoud}"
>
<Forward name="success" path="SubstituteDocumentDataRef" />
</ReplacerPipe>
<ReplacerPipe
name="SubstituteDocumentDataRef"
>
<Param name="ref_inhoud" sessionKey="ref_inhoud" />
<Forward name="success" path="EXIT" />
</ReplacerPipe>
<SoapWrapperPipe
name="WrapCheckOutZaakDocument_Di02Response"
getInputFromFixedValue="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateBv02Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<Forward name="success" path="EXIT"/>
</SoapWrapperPipe>
<SoapWrapperPipe
name="WrapUpdateZaakDocument_Di02Response"
getInputFromFixedValue="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateBv02Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<Forward name="success" path="EXIT"/>
</SoapWrapperPipe>
<!-- ERRORS -->
<XsltPipe
name="UnsupportedSoapActionError"
getInputFromFixedValue="<dummy/>"
styleSheetName="Common/xsl/BuildError.xsl"
storeResultInSessionKey="Error">
<Param name="cause" sessionKey="Error" type="DOMDOC" />
<Param name="code" value="TechnicalError" /> <!-- codes: TechnicalError, TranslationError, ConfigurationError-->
<Param name="reason" pattern="Unsupported SOAP-action. No implementation found for: {SOAPAction}" />
<!-- <Param name="details" sessionKey="" /> -->
<!-- <Param name="detailsXml" type="DOMDOC" /> -->
<Forward name="success" path="BackEndError" />
<Forward name="exception" path="BackEndError" />
</XsltPipe>
<PutInSessionPipe name="InvalidXml">
<Param name="errorCode" value="INVALID_XML"/>
<Param name="errorReason" value="XML was invalid"/>
<Forward name="success" path="WrapFo03Response" />
</PutInSessionPipe>
<PutInSessionPipe name="NotWellFormed">
<Param name="errorCode" value="NOT_WELL_FORMED_XML"/>
<Param name="errorReason" value="XML was not according to xsd"/>
<Forward name="success" path="WrapFo03Response"/>
</PutInSessionPipe>
<PutInSessionPipe
name="BackEndError"
unlessSessionKey="errorCode"
>
<Param name="errorCode" styleSheetName="Common/xsl/BackEndError.xsl" />
<Param name="errorReason" xpathExpression="(//error)[last()]/reason" />
<Param name="errorDetailText" xpathExpression="(//error)[last()]/details" />
<Param name="errorDetailXML" xpathExpression="/error" type="DOMDOC" />
<Forward name="success" path="WrapFo03Response" />
</PutInSessionPipe>
<SoapWrapperPipe
name="WrapFo03Response"
emptyInputReplacement="<EmptyInput/>"
soapBodyStyleSheet="Common/xsl/CreateFo03Response.xslt"
>
<Param name="Stuurgegevens" sessionKey="Stuurgegevens" type="DOMDOC" />
<Param name="Parameters" sessionKey="Parameters" type="DOMDOC" />
<Param name="errorCode" sessionKey="errorCode" />
<Param name="errorReason" sessionKey="errorReason" />
<Param name="errorDetailText" sessionKey="errorDetailText" />
<Param name="errorDetailXML" sessionKey="errorDetailXML" type="DOMDOC" />
<Forward name="success" path="EXIT"/>
</SoapWrapperPipe>
</Pipeline>
</Adapter>
</Module>
Input
No response
What database are you using?
No response
What browsers are you seeing the problem on?
No response
Relevant Log Output
Anything else?
zaakbrug-9.1.0-trace.log
zaakbrug-9.2.0-snapshot-trace.log
zaakbrug-9.1.0-debug.log
zaakbrug-9.2.0-snapshot.log
Pipeline Translate_SoapEndpointRouter_VrijeBerichten_GeefZaakdocumentBewerken.zip
Metadata
Metadata
Assignees
Labels
Type
Projects
Status