エンジニアが発信する【2005年11月】の記事です

エンジニアが作る最新ITブログ トップ>【2005年11月】

2005年11月25日

あまりのいい加減さに脱力

バッチツールをテストをしている。
5000件のXMLをある場所Aから別の場所Bへ移動するため、まずBへAのデータを登録して、成功したらAのデータを消す。

当初は開発時間優先でいい加減に作っていたため、トランザクションを張っていなかった。そこで今年の春くらいにトランザクションを張るように修正してもらった。

で、最初は5000件を一度に処理しようとすると、まずjavaのヒープが足りなくなる。-Xmxでヒープサイズを増やして実行すると、今後はDBサーバーのジャーナルスペースが足りないと言われ、データはロールバックされる。そこで、ジャーナルを200MBに増やして実行すると・・・

途中でジャーナルが足りないというエラーになった。まぁ仕方ないかとDBの中身を見てみると、移動先Bにはデータが入っていなくロールバックされたんですが、移動元Aには途中までのデータが1385件消えている。

ほんとはヒープメモリを食わないための修正をしていたのに、こんな問題まで出てくるとは・・・。



2005年11月25日

SAXハンドラにて、更なる問題が見つかる

これだから他人のソースは見たくないんだよな。

SAXパーサーでcharactersメソッドで空白文字(ブランク、タブ、改行)だったらスキップするようになっていた。

だから勝手にデータ内の改行がなくなるんだよ。



2005年11月21日

DB更新をファイル出力に取り替えてみた

今ある製品のバッチツールが、XMLデータを生成して、DBサーバーへ投げているのだが、件数が大量になるとOutOfMemoryになってしまうので、クエリを直したりしている。だが、運用にのっているユーザがいるので、非常にデグレードが怖い。

そこで、DBサーバーへXML文字列を生成して投げる部分について、ファイル出力に取り替えてやった。まずは、クエリ修正前のソースでファイル出力しておいて、クエリを直した後で別名のファイルを出力して、その2つのファイルを比較する。

DBサーバー内に入れてしまうと、なんとなく同じに見えるけど、はっきりデータ部分が同じかどうかは別途クエリーを出して比較するツールを作らないといけない。とりあえず開発途中ではファイル出力で、すぐに異常に気がつくのでこりゃ良い感じだ。今のところDIコンテナを使っていないが、クラス構成的にはinterfaceを切っていて、ツールの引数(args)オプションで実装クラスを切り替えている。



2005年11月17日

Re: eXistを入れてみた

ソースがビルドできない!!!って、トラブっていたら、antのバージョンが古かったでした。今まで使っていたのがv1.5.3で、今回v1.6.5に上げました。

とりあえずビルドできたけど、今度はexamples-setup.xmlでDBへデータ投入するみたいなんだけど、

C:/\/iProgram Files/\/ieXist/\/iexamples-setup.xml:31: XMLDB exception caught: an io error occurred

が出た。

もっと分かりやすいエラーだしてよ。おそらく「書き込み権限がない」と見た。



エンジニアが作る最新ITブログ トップ>【2005年11月】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA