Custom disassemble pipeline problem

I have a custom disassemble pipeline that has been working as I expect it for a long time (more that 2 weeks). This custom pipeline is the beginning of my chain of orchestrations. Yesterday I deployed one of the orchestration at the end of my chain and since then, my receive pipeline doesn't work anymore. The orchestration that I deployed and that caused the problem is completely unrelated to my pipeline. Also there was no modification whatsoever in the pipeline (pipeline project or assembly).

Of course, the error I receive gives me a big 0 result in google:

Error details: There was a failure executing the receive pipeline: (snip my assembly name and receive location path) Reason: Microsoft.BizTalk.Message.Interop.IDisposable.Dispose()

I tried uninstalling/reinstalling everything, making sure the good versions of the assembly are in the GAC, restarting the machine, restarting the hosts, etc. etc.

Also, I can debug the assembly when it happens. I get in the "Disassemble" method which exits normally and then it stops working (I don't receive the error in Visual Studio, it is only displayed in the administration console). I never reach the "GetNext" method in the pipeline.

Any Ideas why this is happening?

April 29th, 2015 10:18am

Hi,

In my view this error happens when streams/COM/IDisposable objects of your pipeline component are not released at the end of the pipeline component. 

MemoryStream messageData = new MemoryStream();
pContext.ResourceTracker.AddResource(messageData);

The resource tracker is used to close streams/COM/IDisposable objects when a message is published into the message box. However I am not sure why this is happening to your current solution by just adding an Orchestration. Anyways you can add this piece of code in your pipeline component code and see if this makes any difference. Also if you could be more specific that what kind of process is this last Orchestration doing so that we can figure it out from design perspective that what is happening under the hoods.

Regards,

Rahul Madaan

  • Marked as answer by chgag 13 hours 3 minutes ago
Free Windows Admin Tool Kit Click here and download it now
April 29th, 2015 12:57pm

Hi and thanks for your answer. You are correct, I narrowed it down to a class instance of a xmlreader being initialized in the "Disassemble" method and that I was disposing just before returning null in the "GetNext" method.

So I guess I'll just add my instance of the xmlreader to the ressourcetracker so it will be disposed by the pipeline when it terminates?

April 29th, 2015 2:02pm

Hi,

Yes it will dispose off after the pipeline is completely executed regardless of success or failure of the pipeline.

Regards,

Rahul Madaan

Free Windows Admin Tool Kit Click here and download it now
April 29th, 2015 3:15pm

Hi,

In my view this error happens when streams/COM/IDisposable objects of your pipeline component are not released at the end of the pipeline component. 

MemoryStream messageData = new MemoryStream();
pContext.ResourceTracker.AddResource(messageData);

The resource tracker is used to close streams/COM/IDisposable objects when a message is published into the message box. However I am not sure why this is happening to your current solution by just adding an Orchestration. Anyways you can add this piece of code in your pipeline component code and see if this makes any difference. Also if you could be more specific that what kind of process is this last Orchestration doing so that we can figure it out from design perspective that what is happening under the hoods.

Regards,

Rahul Madaan

  • Marked as answer by chgag Wednesday, April 29, 2015 5:59 PM
April 29th, 2015 4:54pm

Hi,

In my view this error happens when streams/COM/IDisposable objects of your pipeline component are not released at the end of the pipeline component. 

MemoryStream messageData = new MemoryStream();
pContext.ResourceTracker.AddResource(messageData);

The resource tracker is used to close streams/COM/IDisposable objects when a message is published into the message box. However I am not sure why this is happening to your current solution by just adding an Orchestration. Anyways you can add this piece of code in your pipeline component code and see if this makes any difference. Also if you could be more specific that what kind of process is this last Orchestration doing so that we can figure it out from design perspective that what is happening under the hoods.

Regards,

Rahul Madaan

  • Marked as answer by chgag Wednesday, April 29, 2015 5:59 PM
Free Windows Admin Tool Kit Click here and download it now
April 29th, 2015 4:54pm

Hi,

In my view this error happens when streams/COM/IDisposable objects of your pipeline component are not released at the end of the pipeline component. 

MemoryStream messageData = new MemoryStream();
pContext.ResourceTracker.AddResource(messageData);

The resource tracker is used to close streams/COM/IDisposable objects when a message is published into the message box. However I am not sure why this is happening to your current solution by just adding an Orchestration. Anyways you can add this piece of code in your pipeline component code and see if this makes any difference. Also if you could be more specific that what kind of process is this last Orchestration doing so that we can figure it out from design perspective that what is happening under the hoods.

Regards,

Rahul Madaan

  • Marked as answer by chgag Wednesday, April 29, 2015 5:59 PM
April 29th, 2015 4:54pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics