新人さん歓迎会。
1個下の後輩に、うちの新人2人と、お客さんとこの新人3人の合計5人のチームの リーダーをさせている。
今日はそのチームの宴会。
なはずだったんだけど、俺だけ仕事。
データベースの情報を暗号/復号してくれるサーバー的なソフトウエアがあるんだけど、 そいつに更新系のSQLを配列に溜め込んでネットワークのラウンドトリップも1回で、 ガツンと実行するってのを取り込んでもらってて。
ってか今までは addBatch/executeBatch しても、 結局そのソフトウエアからデータベースに、1件1件executeしてるだけだった。
相当そのベンダーに文句言って、絶対デグレードしないように、 きっちりバージョンアップしやがれ!なんてことになってたんだけど。
レグレッションテストやってたら、そいつが思いっきりデグレードしやがって。
ドライバをデコンパイルしてソース追っかけたら。 考慮もないひどいコーディング。ってか単体テストやったか? まぁひどい話ですよ。
とりあえず、俺の解析結果をそのベンダーに送りつけて。
そしたら、もう一発問題が発覚。
このプロダクト使うと、StatementとResultSetは運命共同体。 そうじゃないとExceptionをスローしちゃったり。
例えばgetResultSetとかいうメソッド作ったりしますよね? executeQueryして受け取ったResultSetをreturnして、 受け取った側でResultSetをnextしながらwhile文で〜、
なんて一般的だと思うんです。
そしたらreturnした後に、StatementがGCの対象になった時に、 finalizeメソッドでResultSetもサヨナラされちゃうようになってると。
あーあー。なんかムカつく。 俺全然悪くねぇのによー、なんて最強にフテくされ。
でも、遅れて飲み会にいって、ちゃっかり盛り上がっちゃうわけです。 もうお客さんとも相当仲良くなったから。 飲み会もフツウに楽しめる。
帰りはお客さんの新人さんと一緒になって。 なんだか話してるだけで、目の輝きが違うわけです。
俺にもそんな時代があったんだよなぁなんて。。