Backport(バックポート) #4169
Bug(バグ) #3925: タスクが異常終了した場合の終了コードが適切でない
タスクが異常終了した場合の終了コードが適切でない
Start date:
2017-03-09
Due date:
% Done:
100%
Description
Overview (現象)¶
opPlugin:install など一部のタスクは異常終了した場合でも終了コードが 0 を返しており、スクリプト等で異常終了を検知することができない。
プロセスの終了コードは慣例に従い、正常終了では 0 を、異常終了では 0 以外(通常は 1 )を返すべきである。
(sh などの if コマンドの構文でも、終了コードが 0 の場合に then 以降のコマンドを実行すると定義している)
$ /usr/bin/php ./symfony opPlugin:install opMessagePlugin >> plugin installing plugin "opMessagePlugin" >> sfPearFrontendPlugin downloading opMessagePlugin-1.0.0.tgz ... >> sfPearFrontendPlugin Starting to download opMessagePlugin-1.0.0.tgz (34,163 bytes) >> sfPearFrontendPlugin . >> sfPearFrontendPlugin . >> sfPearFrontendPlugin . >> sfPearFrontendPlugin . >> sfPearFrontendPlugin . >> sfPearFrontendPlugin . >> sfPearFrontendPlugin ...done: 34,163 bytes >> sfPearFrontendPlugin could not extract the package.xml file from >> sfPearFrontendPlugin "/home/upsilon/git/openpne3/v3.6/cache/.pear/opMessagePlugin-1.0.0.tgz" >> sfPearFrontendPlugin Download of "http://get.openpne.jp/opMessagePlugin-1.0.0.tgz" >> sfPearFrontendPlugin succeeded, but it is not a valid package archive >> sfPearFrontendPlugin Invalid or missing remote package file Plugin "opMessagePlugin" installation failed: $ echo $? 0
ここで表示されているエラーは #3918 のもので、当チケットの問題とは関係ない。
Causes (原因)¶
opPluginInstallTask::execute()
メソッドでは異常終了時に return false;
する実装となっている。
} catch (sfPluginException $e) { $this->logBlock($e->getMessage(), 'ERROR'); // ...snip... return false; }
sfTask::execute()
の戻り値は boolean 型ではなく integer 型を返すことが想定されており、上記のように boolean 型の値を返してしまうと PHP の 型変換の規則 に従って false
は 0
に変換されてしまう。
これが原因で、タスクの異常終了時に終了コードが 0 になっていた。
Way to fix (修正内容)¶
sfTask::execute()
を実装するクラスで return false;
を記述している箇所を return 1;
に置き換える。
History
#1
Updated by isao sano almost 6 years ago
- Status changed from New(新規) to Accepted(着手)
#2
Updated by isao sano almost 6 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
https://github.com/openpne/OpenPNE3/pull/453 にてプルリクエストを送信しました。
レビューお願いします。
#3
Updated by Youichi Kimura over 5 years ago
- Related to Bug(バグ) #3925: タスクが異常終了した場合の終了コードが適切でない added
#4
Updated by kaoru n about 5 years ago
- Parent task set to #3925
#5
Updated by Rimpei Ogawa almost 5 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#6
Updated by kaoru n almost 5 years ago
- Target version changed from OpenPNE 3.6.x to OpenPNE 3.6.30
#7
Updated by isao sano almost 5 years ago
- Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
- % Done changed from 70 to 80
試験完了しました。
問題ありません。
#8
Updated by kaoru n almost 5 years ago
- Status changed from Pending Merge(マージ待ち) to Fixed(完了)
- % Done changed from 80 to 100
マージしました