TransactionScopeのタイムアウトの罠

公開日: : 最終更新日:2016/03/30 programing

罠といえば言い過ぎか・・・

便利すぎるTransactionScopeですが、タイムアウト値に罠がありました。皆さん気をつけましょうという話。

下の例の場合、既存トランザクションに参加して、タイムアウト値を1時間で設定しているのですが・・・

using (TransactionScope ts = new TransactionScope(

        TransactionScopeOption.Required,

        new TimeSpan(1,0,0)))

しかしこれだと、実際に長いトランザクションを実行しても必ず10分でこけます。「なんでやねん」とMSDNを調べてみたところこういう事でした。

MachineSettingsSection.MaxTimeoutプロパティ
http://msdn.microsoft.com/ja-jp/library/system.transactions.configuration.machinesettingssection.maxtimeout.aspx

型 : System.TimeSpan
最大許容時間を格納している TimeSpan オブジェクト。既定値は、00:10:00 です。

なんとまぁ、machine.configを修正しない限り、ソースコード側でTransactionScopeクラスにTimeout値を設定しても10分が最大値になってしまうとのことです。

これを例えば1時間に修正する場合、以下のエントリをmachine.configに追加する必要があります。

<configuration>
<system.transactions>
  <machineSettings maxTimeout="01:00:00" />
</system.transactions>
</configuration>

危なかったんです。ほんとに。

machine.configはサーバー単位で共有されるため、いろんなアプリが相乗りしている場合、これを変更することをインフラ側の担当者はおいそれとは許してくれません。というか、実際許してくれなかったんですがね。

システムテストで本番相当サーバーでの最長処理が6分弱ぐらいだったので、「このままでいいか・・・」と本番リリースしたんです。そしたら本番初日で「9分35秒」というギリギリのタイムをたたきだしおったわけですよ。もうアホかと。

生きた心地がしなかったので、緊急対応でこの処理だけTransactionScope使うの止めました。TransactionScopeを使ってバッチ処理なんかの長いトランザクション制御をする場合は、皆さんきをつけましょう。

PC-記事下-サブ(Amazon)


  • このエントリーをはてなブックマークに追加
  • Pocket
  • 645
    follow us in feedly

ブログ主について

ハマコー(@hamako9999
hamako9999
ブログとtwitterはAndroid成分多め。WordPressやガジェット少々。たまに子育てやランニングが混ざります。お問い合わせはhamako9999.netについてよりお願いします。

関連記事

Linux初心者から抜け出すための最適本「シェルプログラミング実用テクニック」

しばらく、LinuxやらMacのターミナル触ってると、こんなことを感じる人も多いのでは。 「c

記事を読む

技術評論社の無料小冊子「電脳会議」がITエンジニアにおススメ

この、電脳時代!!音楽でも本でもなんでもかんでも電子化されている昨今だけど、技術評論社が発行してい

記事を読む

応答速度28.8倍。WordPressをApacheからNginxに移行して感じたブログ運営

昔からやろうやろうと思って出来ていなかった、このブログ(Wordpress)のWebサーバをAp

記事を読む

WordPressの任意の記事にだけ目次をつける方法(Table of Contents使用)

ブロガーの皆さん、記事に目次つけてますか?   「つけたい日もあれば、つけたくない日もある」

記事を読む

10分で設定完了。WordPressに監視サービスNewRelicを無料で導入してみた

アカウント登録からはじめて設定完了まで10分程度。恐ろしいほど手軽に導入できるくせに、情報量が半

記事を読む

日本初のDrupalイベントでスピーカー登壇してきました in Drupal Camp Japan Kyoto

春うららかな4月の京都。日本初のDrupalCampというイベントで、光栄にもスピーカー登壇して

記事を読む

サイトイメージががらりと変わるWebフォントを導入してみた。簡単で効果はでかい。使用前後のイメージを添えて。

元旦の朝、ガキ使の録画を見るという重大なミッションが残されているハマコー(@hamako9999

記事を読む

フラットデザインな配色やレイアウトを参考にする時におすすめのページ。CategoryやColorShemeでの分類が便利

最近ようやく、WordPressで自分が採用しているテーマStingerのデフォルト状態から、デ

記事を読む

オンラインプログラミング学習の雄、Codecademyのスマフォアプリが出た。その狙いは?

以前から激賞しまくっているCodecademy。 Codecademyがプログラミング学習に最

記事を読む

WordPressのStingerを自由自在にカスタマイズするための8つの修行

Stinger Advent Calendar 2013、19日目担当のハマコー(@hamako9

記事を読む

a8.net DMMmobile

Comment

  1. きんきん より:

    私もこれにはまりました。その後調べてみると、リフレクションで書き換えができるようです。
    >> http://blogs.msdn.com/b/ajit/archive/2008/06/18/override-the-system-transactions-default-timeout-of-10-minutes-in-the-code.aspx

    今後、たどり着いた人の参考までに・・

  2. hamako9999 より:

    おお、素晴らしい、ありがとうございます。コメント承認させていただきました。

adsense

ハマコー(@hamako9999
hamako9999

SIerでコンシューマ向けサービスの開発してます。ブログはAndroid成分多め。WordPressやガジェット少々。たまに子育てやランニングが混ざります。

お問い合わせはhamako9999.netについてよりお願いします。

PAGE TOP ↑