プロジェクト

全般

プロフィール

Backport(バックポート) #4169

Bug(バグ) #3925: タスクが異常終了した場合の終了コードが適切でない

タスクが異常終了した場合の終了コードが適切でない

isao sano約7年前に追加. 約6年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2017-03-09
期日:
進捗率:

100%


説明

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 の 型変換の規則 に従って false0 に変換されてしまう。
これが原因で、タスクの異常終了時に終了コードが 0 になっていた。

Way to fix (修正内容)

sfTask::execute() を実装するクラスで return false; を記述している箇所を return 1; に置き換える。

関係しているリビジョン

リビジョン 68232ba4 (差分)
isao sano約7年前に追加

Fix to take the return value into consideration (refs #4169, BP from #3925)

リビジョン d2467cfd
kaoru n約6年前に追加

Merge pull request #453 from isaosano/t-4169

Fix to take the return value into consideration (refs #4169, BP from #3925)

履歴

#1 isao sano約7年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#2 isao sano約7年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

https://github.com/openpne/OpenPNE3/pull/453 にてプルリクエストを送信しました。
レビューお願いします。

#3 Youichi Kimura6年以上前に更新

  • 関連している Bug(バグ) #3925: タスクが異常終了した場合の終了コードが適切でない を追加

#4 kaoru n6年以上前に更新

  • 親チケット#3925 にセット

#5 Rimpei Ogawa約6年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#6 kaoru n約6年前に更新

  • 対象バージョンOpenPNE 3.6.x から OpenPNE 3.6.30 に変更

#7 isao sano約6年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

試験完了しました。
問題ありません。

#8 kaoru n約6年前に更新

  • ステータスPending Merge(マージ待ち) から Fixed(完了) に変更
  • 進捗率80 から 100 に変更

マージしました

他の形式にエクスポート: Atom PDF