Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hotfix: correct reopen_socket() invocation #58

Merged

Conversation

masahiro-kubota
Copy link
Contributor

@masahiro-kubota masahiro-kubota commented Nov 18, 2024

Description

このPRはUDPの通信エラーに起因したプロセス死亡を防止するためのものである。

LANポートを無効化した(UDPの通信エラーが発生した)ときにreopen_socket()が見つからず、v2i_interfaceノードが終了してリスポーンしてしまうため、処理負荷が低減できずv2i_interface起因でwarning-19が発生してしまう可能性がある。

本PRでは、下記の機能をサポートする。

  • UDPの通信エラー時のプロセス死亡を防止する
  • UDPの通信エラー復旧後に既存のノードの振る舞いを再開する

Error countermeasures

  • reopen_socket()をインスタンスメソッドとして呼び出す。

Related Links

TIER IV INTERNAL LINK

How to reproduce

  • 以下のコマンドでudp通信を行っているLANポートを無効化する。
device_name="ethernets"

device=`cat /etc/netplan/00-installer-config.yaml | grep "${device_name}" -A1 | tail -n 1 | sed "s/ *//g" | sed "s/://g"`

i=1; while [ $i -le 3 ]; do sudo ip link set "${device}" down; sleep 1; sudo ip link set "${device}" up; sleep 60; i=$(expr $i + 1); done

※ベンチの場合は修正前コードの150行目と151行目の間にself._request_array = [1]を入れてUDP通信を行わせる必要がある。

機能評価

UDPの通信エラー時にプロセス死亡の発生を防止できることを検証

  • syslogに[ERROR] [v2i_interface.py-75]: process has diedがでないことを確認
  • ソケットを再openさせた後にv2i_interfaceのプロセスIDが変わっていないことを確認。
    • linkをdownする前と再up後にps aux | grep v2iでPIDが変化していないことを確認

UDPの通信エラー復旧後に既存のノードの振る舞いを再開することを検証

  • ソケットの再openが正常に動作することを確認
  • linkがdownしている最中に、ソケットのcloseが正常に実施できることをnetstat -anp | grep <PID>で確認
  • ソケットの再open後に正常にudp送信が実施出来ていることを確認

Regression test

今回は、機能のロジックに関する差分がないので、設計者テストでのregression testは不要と判断。
別途、実車評価で評価する。

@masahiro-kubota masahiro-kubota marked this pull request as ready for review November 18, 2024 07:14
@masahiro-kubota masahiro-kubota changed the title hotfix: correct method ivocation hotfix: correct reopen_socket() ivocation Nov 18, 2024
@masahiro-kubota masahiro-kubota changed the title hotfix: correct reopen_socket() ivocation hotfix: correct reopen_socket() invocation Nov 18, 2024
@sfukuta
Copy link
Contributor

sfukuta commented Nov 18, 2024

v2i_interfaceノードがリスポーン

この部分は、process diedだと思うので、表現の訂正をお願いします。リスポーンは、その結果の挙動だと思います。

@sfukuta
Copy link
Contributor

sfukuta commented Nov 18, 2024

機能評価

syslogに、process diedがない事の確認を追加してほしいです。

@sfukuta
Copy link
Contributor

sfukuta commented Nov 18, 2024

How to reproduce

→ LANポートの無効化だけでは、前提条件になるため、手順の記載をお願いします。

@peeeechi
Copy link

peeeechi commented Nov 18, 2024

typo:
reopen_socker -> reopen_socket

Error countermeasures

reopen_socker()をインスタンスメソッドとして呼び出す。

@yn-mrse
Copy link
Contributor

yn-mrse commented Nov 20, 2024

CI解消後マージください。

@asa-naki
Copy link
Contributor

asa-naki commented Nov 20, 2024

@masahiro-kubota @yn-mrse
CI解消し、passしているため、マージします

@asa-naki asa-naki self-requested a review November 20, 2024 13:06
Copy link
Contributor

@asa-naki asa-naki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ciの解消を確認したため、approve

@asa-naki asa-naki merged commit 2b16a89 into eve-autonomy:main Nov 20, 2024
1 check passed
@masahiro-kubota masahiro-kubota deleted the fix/correct-method-ivocation branch November 20, 2024 13:10
@masahiro-kubota masahiro-kubota restored the fix/correct-method-ivocation branch November 22, 2024 05:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants