ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

OSSテクニカルサポートの対応例

OSSを使ってシステムを開発したり運用している際に問題が発生した時、ローグウェーブのOpenLogic OSSテクニカルサポートサービスは回避策や解決策を提示します。

roguewave.jp

具体的には、どのようなやりとりを行っているのでしょうか?日本での事例をいくつかご紹介します。

質問例1: Apache Struts脆弱性対応テストを実行中、404エラー

質問: ClassLoaderの操作を許してしまう脆弱性の発表を受けて、このクラスインジェクションの回避策を独自に考案して試したがなぜかエラーが発生するので、その原因と回避策が知りたい。

対応 担当者は、まず公式のドキュメントを調査し、脆弱性の原因がStrutsチームが行ったClass Loaderの修正が不十分であったこと、その問題に対しては公式の回避策が存在することを提示しました。また、OpenLogicサポートチームとしては、公式の回避策が存在するにもかかわらずお客様独自の回避策を適用するのは推奨できないことも付け加えました。

その後、お客様の回避策によるエラーが発生する条件についての追加のご質問を受け、そのエラーがJBoss製品によるものではなく使い方によるものであること、そのロジックを説明して問題を切り分けました。このようにテクニカルサポートでは、いただいた質問に単に答えるだけでなく、根本原因にまで遡って問題の再発や対応策によって起こる副作用を防ぎ、OSSを安全に適切に利用できるようアドバイスします。

質問例2: GnuPGの互換性についての質問

質問 GnuPG 1.4から2.0にアップグレードしようと思っているが互換性はあるか?鍵、失効リスト、暗号化ファイルの互換性などの観点から説明が欲しい

対応 まず、GnuPG -2は複数のモジュールに分割されており、1とはアーキテクチャが異なっているが、問題なく共存させることができる。また、1はサイズが小さくまた他のモジュールへの依存性が少ないため、小規模なシステムでは有益であるという特徴を説明した後で、1で作ったgpgを2のgpg-agentで使うことが可能だし、シームレスにパスフレーズがキャッシュされる、ということを説明しました。

その後、互換性があることを示すためにGPG1で暗号化しGPG2で復号化する実例を示しました。鍵ペアを生成し、文書を暗号化し、同じ環境にインストールされた2で復号化し、shasumでダイジェストを元のファイルと比較し、問題ないことを確認しました。実例では、コマンドの入力や出力のスクリーンショットを随時回答に混ぜて、作業過程をわかりやすく示しました。メモリダンプの分析やアクセスログ解析ではグラフのスクリーンショットが添付されることもあります。

質問例3: PostgreSQL pgpool-II のアップグレード

質問 RHEL 5.7でPostgreSQLを使っている。pgpool-II を3.2.1から3.2.3へアップデートしたい。こういう手順を考えているが問題ないか、また何か注意すべき点は?

対応 担当者が自分でアップデートを試して問題ないことを確認し、問題ないが一部が不要であることを伝えました。ここで、バージョン3.2.2で発生したバグ(クエリキャッシュの結果が不正)があるので3.2.3でも発生するかどうか確認すべきこと、その確認手順をお伝えし、また、提供されたEnable_Query_Cacheパラメータは3.2.xで削除されたので、もし設定ファイルに残っていたら消したほうがよいことも付記しました。

質問例4: Tomcatのエラーメッセージ

質問 Windows Server 2008 R2上のTomcat 7.XでOS再起動時にApache Tomcatからエラーメッセージが出力された。問題はないか?

対応 ThreadLocalなオブジェクトが削除されないといったwebアプリケーションのエラーメッセージを見て、こうしたエラーは多くの場合クローズや破棄のwebリクエストの際に誤ったメソッドが呼ばれることによって発生することを指摘、この場合はwebリクエストからのあるオブジェクトがそれに該当することを示しました。 finallyディレクティブを正しく記述しなかった場合、エラーや割り込みが発生し、webセッションがクローズする前にリクエストのオブジェクトを破棄します。これはメモリリークの原因となり、質問いただいたようなSEVEREレベルのログメッセージが出力されるのです。開発者がコードの中でfinallyディレクティブを使っているかどうか確認するための短いコード断片を提供しました。

その他の質問と対応

  • EclipseSubversive プラグインを使って認証するときにApacheのログに不可解な401エラーが出続ける原因について、ソースコードを調査して認証プロセスを理解し、原因を切り分けて、回避策としての設定方法を画像付きで説明
  • RHEL上でPostgreSQLを使っているが9.0.15のリリースノートにある、「relfrozenxidの値を更新するかどうか判定するVACUUMの処理を修正しました。」という記述がわかりづらいので説明して欲しい、という依頼に、影響を受けるバージョン、どういう条件でこのバグが発生するのか、バグの影響を受けているかどうかを確認する方法、バグの回避策はないこと、などを回答しました

その他典型的な質問をいくつかウェブサイトのOSSテクニカルサポートページで紹介していますので、ご覧ください。

まとめ

日本で発生したサポート案件をいくつか見てきましたが、OSSの公式文書やコミュニティ内で行われる最新のやりとり、セキュリティブログなどは多くが英語で書かれていたり翻訳の精度に限界があったり、そもそももとの英語の文章でも十分な情報が掲載されないケースも多いため、通常日本語で活動している開発者やマネージャーが必要な情報を取得するのは非常に難しいことを実感します。ローグウェーブのOSSアーキテクトたちは主に米国に拠点をおいており、先日ご紹介したように、日々英語圏のOSS関連ニュースを調べ、情報を共有しているため、非常に速く情報を取捨選択して正しい情報にたどり着くことができます。なお、当然ながら上記のやりとりは全て日本のお客様と日本人スタッフにより日本語で行われました。

blog.roguewave.jp

お問い合わせは、ローグウェーブ営業部(sales@roguewave.jp / 03-5211-7760 )まで。Webフォームもご利用いただけます。

なお、サポート対応する中で判明したOSSのバグはコミュニティにフィードバックして製品の改善に貢献します。先日CentOSコミュニティに受理されたプルリクエストはローグウェーブOpenLogicのCentOSチームが作成したものです。(英語によるプレスリリース)

blog.klocwork.com

ローグウェーブ セールスエンジニア 柄澤(からさわ)