<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Yet Another Non-Deterministic BizTalk Zombie Pattern</title>
	<atom:link href="http://www.modhul.com/2008/06/08/yet-another-non-deterministic-biztalk-zombie-pattern/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.modhul.com/2008/06/08/yet-another-non-deterministic-biztalk-zombie-pattern/</link>
	<description>Experiences of a UK BizTalk Consultant</description>
	<lastBuildDate>Wed, 01 Feb 2012 18:36:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: Alex</title>
		<link>http://www.modhul.com/2008/06/08/yet-another-non-deterministic-biztalk-zombie-pattern/comment-page-1/#comment-1310</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Tue, 04 May 2010 18:10:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.modhul.com/?p=143#comment-1310</guid>
		<description>Hello there.
We have this kind of scenario in our orchestration.

I agree, it looks awkward but this is what our business process is.
We are lucky actually to have this pattern twice in one orchestration:
1. loop in which we determine if all the required data available. if yes - go further, no - send request to user and wait answer or timeout. User response starts the check cycle again.
2. loop again where orchestration tries to send a message to ext. system and wait for a response or times out. If response then exit from orch. If timeout - weird business logic - we still wait answer from external system and in the same time command from user to retry or for the final timeout which is orch. exit.

I can imagine that there is possibility to decouple this orchestration and replace this non deterministic logic with series of pusher-subscriber chains but this orch is so complex and has so many variables/messages/operations/exception handlings aside from this weird pattern that I can&#039;t figure it out....</description>
		<content:encoded><![CDATA[<p>Hello there.<br />
We have this kind of scenario in our orchestration.</p>
<p>I agree, it looks awkward but this is what our business process is.<br />
We are lucky actually to have this pattern twice in one orchestration:<br />
1. loop in which we determine if all the required data available. if yes &#8211; go further, no &#8211; send request to user and wait answer or timeout. User response starts the check cycle again.<br />
2. loop again where orchestration tries to send a message to ext. system and wait for a response or times out. If response then exit from orch. If timeout &#8211; weird business logic &#8211; we still wait answer from external system and in the same time command from user to retry or for the final timeout which is orch. exit.</p>
<p>I can imagine that there is possibility to decouple this orchestration and replace this non deterministic logic with series of pusher-subscriber chains but this orch is so complex and has so many variables/messages/operations/exception handlings aside from this weird pattern that I can&#8217;t figure it out&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gregory Van de Wiele</title>
		<link>http://www.modhul.com/2008/06/08/yet-another-non-deterministic-biztalk-zombie-pattern/comment-page-1/#comment-128</link>
		<dc:creator>Gregory Van de Wiele</dc:creator>
		<pubDate>Mon, 09 Jun 2008 12:22:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.modhul.com/?p=143#comment-128</guid>
		<description>Joe Duffy, whois an expert on all things multi-t and locking, and regularly writes for MSDN magazine wrote this once:

13. A race condition or deadlock in library code is always a bug.

http://www.bluebytesoftware.com/blog/PermaLink,guid,f8404ab3-e3e6-4933-a5bc-b69348deedba.aspx

BizTalk is the library in this case and this problem should have been better addressed by MS.

A workaround for certain scenarios much like the one of Victor: disable the receive location by code in the orchestration, wait twice the cache interval (forgot why exactly) and asynchronously start orchestration that enables the RL.  

Antoher workaround that I used for singleton: a service window around midnight for the RL, inside the delay branch of the listen shape you can check the time and if you are inside the service window (take a margin here + or - 1 or 2 minutes) you can more or less safely recycle. That solved the problem for me. I guess it is not bullet proof either but it worked for us.

Gregory</description>
		<content:encoded><![CDATA[<p>Joe Duffy, whois an expert on all things multi-t and locking, and regularly writes for MSDN magazine wrote this once:</p>
<p>13. A race condition or deadlock in library code is always a bug.</p>
<p><a href="http://www.bluebytesoftware.com/blog/PermaLink,guid,f8404ab3-e3e6-4933-a5bc-b69348deedba.aspx" rel="nofollow">http://www.bluebytesoftware.com/blog/PermaLink,guid,f8404ab3-e3e6-4933-a5bc-b69348deedba.aspx</a></p>
<p>BizTalk is the library in this case and this problem should have been better addressed by MS.</p>
<p>A workaround for certain scenarios much like the one of Victor: disable the receive location by code in the orchestration, wait twice the cache interval (forgot why exactly) and asynchronously start orchestration that enables the RL.  </p>
<p>Antoher workaround that I used for singleton: a service window around midnight for the RL, inside the delay branch of the listen shape you can check the time and if you are inside the service window (take a margin here + or &#8211; 1 or 2 minutes) you can more or less safely recycle. That solved the problem for me. I guess it is not bullet proof either but it worked for us.</p>
<p>Gregory</p>
]]></content:encoded>
	</item>
</channel>
</rss>

