<?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: Serializable != Synchronized, especially not with Oracle</title>
	<atom:link href="http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/</link>
	<description>How I Learned to Stop Worrying and Love Writing Software</description>
	<pubDate>Thu, 09 Sep 2010 02:12:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Omri Ben Shitrit</title>
		<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/comment-page-1/#comment-8680</link>
		<dc:creator>Omri Ben Shitrit</dc:creator>
		<pubDate>Thu, 11 Feb 2010 14:59:25 +0000</pubDate>
		<guid isPermaLink="false">http://joemorrison.org/blog/?p=64#comment-8680</guid>
		<description>Hi Joe,

A nice link on Wikipedia thats relevant:

http://en.wikipedia.org/wiki/Software_transactional_memory 

Omri</description>
		<content:encoded><![CDATA[<p>Hi Joe,</p>
<p>A nice link on Wikipedia thats relevant:</p>
<p><a href="http://en.wikipedia.org/wiki/Software_transactional_memory" rel="nofollow">http://en.wikipedia.org/wiki/Software_transactional_memory</a> </p>
<p>Omri</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: choy</title>
		<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/comment-page-1/#comment-5363</link>
		<dc:creator>choy</dc:creator>
		<pubDate>Wed, 22 Jul 2009 07:34:14 +0000</pubDate>
		<guid isPermaLink="false">http://joemorrison.org/blog/?p=64#comment-5363</guid>
		<description>Couldn't the "send message" be included in the same transaction as the database update. if you were using Oracle AQ, I'm quite sure it would be.

But assuming you're using some external system and the cost of two-phase commit (JTA, Enterprise Services) is too much, the best-effort thing Daniel suggested with the message sent after is not bad. it just has to be understood that the QoS for the message is lower than the update.

Oracle approach to serializability is a nice option. not too useful for a not-so-concurrently-updated account row in only one table. But perhaps useful for account transfers when you want to avoid locking both accounts.</description>
		<content:encoded><![CDATA[<p>Couldn&#8217;t the &#8220;send message&#8221; be included in the same transaction as the database update. if you were using Oracle AQ, I&#8217;m quite sure it would be.</p>
<p>But assuming you&#8217;re using some external system and the cost of two-phase commit (JTA, Enterprise Services) is too much, the best-effort thing Daniel suggested with the message sent after is not bad. it just has to be understood that the QoS for the message is lower than the update.</p>
<p>Oracle approach to serializability is a nice option. not too useful for a not-so-concurrently-updated account row in only one table. But perhaps useful for account transfers when you want to avoid locking both accounts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vaandu</title>
		<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/comment-page-1/#comment-5355</link>
		<dc:creator>vaandu</dc:creator>
		<pubDate>Tue, 21 Jul 2009 13:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://joemorrison.org/blog/?p=64#comment-5355</guid>
		<description>It is very useful, I was just seraching difference bet. the serializable and for update. Thx a lot Joe</description>
		<content:encoded><![CDATA[<p>It is very useful, I was just seraching difference bet. the serializable and for update. Thx a lot Joe</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/comment-page-1/#comment-5337</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Sun, 19 Jul 2009 13:45:44 +0000</pubDate>
		<guid isPermaLink="false">http://joemorrison.org/blog/?p=64#comment-5337</guid>
		<description>Thanks, that's a good suggestion. It works for this example - as long as the code correctly retries upon transaction failure - and in any case where you can postpone all side effects (e.g. sending the message) until after the database updates.  Although that's not always possible, e.g. if the details of the database update depend on a response from the side-effecting operation.</description>
		<content:encoded><![CDATA[<p>Thanks, that&#8217;s a good suggestion. It works for this example - as long as the code correctly retries upon transaction failure - and in any case where you can postpone all side effects (e.g. sending the message) until after the database updates.  Although that&#8217;s not always possible, e.g. if the details of the database update depend on a response from the side-effecting operation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Chait</title>
		<link>http://joemorrison.org/blog/2009/07/18/serializable-synchronized-especially-not-with-oracle/comment-page-1/#comment-5332</link>
		<dc:creator>Daniel Chait</dc:creator>
		<pubDate>Sun, 19 Jul 2009 01:17:07 +0000</pubDate>
		<guid isPermaLink="false">http://joemorrison.org/blog/?p=64#comment-5332</guid>
		<description>Nice post Joe.

One thought - in this example, you could just send the message after you have actually withdrawn the $100 from the account.  Re-ordering your steps so that the data is committed before sending the message would be the more sensible approach here anyway.</description>
		<content:encoded><![CDATA[<p>Nice post Joe.</p>
<p>One thought - in this example, you could just send the message after you have actually withdrawn the $100 from the account.  Re-ordering your steps so that the data is committed before sending the message would be the more sensible approach here anyway.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
