Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

Payaraのバグを報告してみよう

この記事は?

Payara Advent Calendar 2016の22日目です。

Payaraは、GitHub上でオープンソースで開発されています。Payara開発チームは、誰でもGitHubのIssueに書き込んでバグ報告してくれてOK、というスタンスをとっています。

僕は過去2回*1バグを報告し、修正してもらうことができました。

403 error occurs when Form-Authentication succeeded PAYARA-1244 · Issue #1213 · payara/Payara · GitHub

Payara does NOT rollback when RuntimeException occurs in CDI @Transactional method using JDBC · Issue #505 · payara/Payara · GitHub *2 *3

今回は、修正してもらいやすいIssueの書き方について、僕が自分なりに気をつけていることをご紹介します。

Payaraの今使用しているバージョン・最新バージョン・過去のバージョンで比較する

今お使いのPayaraは最新バージョンでしょうか?もしそうでなければ、まずはPayaraの最新バージョンで動かしてみましょう。

Payaraは四半期に1回リリースされており、積極的にバグ修正や機能追加が行われているため、もしかしたらバグが修正されているかもしれません。

もし、最新バージョンで動けばそれでいい*4のですが、もし最新バージョンにしても問題が解決しなかったり、そもそも今お使いのものが既に最新バージョンであれば、1つ前など過去のバージョンのPayaraで試してみましょう。

過去のバージョンで期待通りに動作すれば、最新バージョン特有のバグの可能性があります。もし、過去のバージョンでも動作しなければ、以前から潜在していたバグの可能性があります。

余談ですが、Payara公式サイトからのダウンロードは、時とネットワーク環境にもよるのですが、めっちゃ遅いことが多いです(--;

僕は、過去にダウンロードしたPayaraのZIPファイルは、なるべく保存しています。

バグが再現する最小限のサンプルアプリを作り、GitHubにアップする

Payara開発チームは主にイギリスの方々なので、言語は英語です。英語でIssueを書くのは結構大変です。僕もまだまだ素早く正確に書くことができません(^^;

しかし、我々の共通言語であるJava言語であれば、英語圏の方を相手にしても、意図は明確に伝えられるはずです。

なので、バグが再現するサンプルアプリを作りましょう。さらにそれをGitHubにアップすれば、すぐにPayara開発チームに確認してもらうことができます。

このサンプルアプリは、Payara開発チームにバグを伝えることが目的なので、不要な機能は作らず、本当にバグが再現するだけの最小限のアプリにしましょう。

また、この最小限サンプルを作っていくことで、自分の中でも「どこがバグっぽいんだろう?」ということが明確になり、よりIssueを書きやすくなります。

設定はスクリプト化して、サンプルアプリと一緒にGitHubにアップする

GlassFish/Payaraの設定は、asadminコマンドまたはブラウザで開ける管理コンソールで行います。

管理コンソールはGUIで設定できるので非常に便利な反面、同じ設定手順を再現するのに時間がかかったり、打ち間違いなどで設定をミスする可能性があります。

よって、単純な設定ミスだったのか、設定は合っていて本当にバグだったのかが、自分にもPayara開発チームにも分かりづらくなってしまいます。

なので、設定はできる限りasadminコマンドで行い、それを1つのシェルスクリプトにまとめましょう。それを最小限サンプルと一緒のプロジェクトにまとめてGitHubにアップしてしまえば*5、Payara開発チームにも使ってもらえます。

また、スクリプト化することで、Payaraの複数バージョンでの確認もやりやすくなります。PayaraのZIPを展開して、スクリプトを実行するだけで設定が完了しますので、時間もかからないし、設定をミスする心配が少なくなります。

asadminコマンドについては、蓮沼さんのブログうらがみさんのブログを確認しましょう!

発生する現象とその再現手順を明確にIssueに書く

さて、ここまで準備が完了すれば、あとは頑張ってIssueを書くだけです。

どうしてもここは英語がついて回りますが、「どんな現象が発生するのか?」「最小限アプリを使って、どのような手順でその現象を再現できるか?」の2点を外さなければ大丈夫です。

これをコードやスクリーンショットを交えて書けば、英語の文章も少なく済みます。もちろん、GitHubにアップしたサンプルアプルのURLも忘れずに、Issueの最初の方で書いておきましょう。

また、最近はIssueのテンプレートが作成されて、使っているPayara・OS・JDKのバージョンを書く欄がありますので、これも埋めてください。

Payaraに貢献しよう!

Payaraを利用している方、もし何かバグっぽいものに遭遇したら、ぜひIssueを書いてみてください。

それにより、PayaraそしてGlassFishがより良いものとなっていきます。そしてそれは、Java EE全体への貢献にもつながるはずです。

それでは、Enjoy Payara & Java EE!!

*1:本当は3回なんですが、僕の勘違いだったことが1回あったため、含めていません(^^;

*2:こちらのバグは、僕が発見したものではなく、僕はIssueを書いただけです。詳細はこちらのコメント欄へ

*3:しかし、「Payara does not rollback」は我ながらカッコ悪いですね・・・。正しくは「Rollback does not work」とかでしょうか?

*4:よくない場合もあると思いますが

*5:パスワードなどの機密情報はなるべく伏せてアップしてください