久しぶりに AWS サーバーにログインして yum update したら P4 が繋がんなくなったお話です。死ぬかと思った。
インスタンスを再起動 ~ p4d 復旧まで
ひとまず EC2 インスタンスを再起動するかー、とコンソールから実行。
あれ、でも P4 サーバーってどうやって起動したんだっけ・・・?としばらくググる。
P4 コマンドさえも $P4PORT を設定していないので通らない状態でした。
Perforce client error:
Connect to server failed; check $P4PORT.
TCP connect to perforce:1666 failed.
perforce: host unknown.
備忘録として残しておきます。
p4 set P4USER=username
p4 set P4PORT=1666
p4d コマンドの実行
まずは P4 サーバーのルートディレクトリ探しから。
自分の場合は /opt/perforce/servers/master/root に構築してました。
何のドキュメントを見ながら作ったのか、全く覚えてないのだが perforce ユーザー権限で作成されていた。こういうのはメモしておくべきだと激しく後悔。
-bash-4.2$ ls
db.bodresolve db.graphindex db.logger db.revpx db.templatesx
db.bodresolvex db.graphperm db.message db.revsh db.templatewx
db.bodtext db.group db.monitor db.revstg db.ticket
こういった db ファイルがたくさん並んでいるのがルートディレクトリのようです。
さっそく再起動コマンドを実行する。
-bash-4.2$ p4d -r /opt/perforce/servers/master/root -p 1666
-bash-4.2$
しかし、なにもおこらなかった!
ログ調査
/opt/perforce/servers/master/logs/log
cd コマンドを唯々繰り返していると logs ディレクトリが存在していることに気づく。
Perforce server error:
Database is at old upgrade level 36. Use 'p4d -r /opt/perforce/servers/master/root -xu' to upgrade to level 39.
これだ!これだよ!
-bash-4.2$ p4d -r /opt/perforce/servers/master/root -xu
Upgrades will be applied at server startup.
そして再び起動コマンドを実行。
-bash-4.2$ p4d -r /opt/perforce/servers/master/root -p 1666 -d
Perforce Server starting...
-r で P4ROOT の指定、-p でポートの指定、-d でバックグラウンド実行となります。
P4V からの接続テスト
ssl:{address}:1666
いつも通り SSL での接続を試みる。
SSL connect to ssl:dev.nanae.online:1666 failed (既存の接続はリモート ホストに強制的に切断されました。 ).
Remove SSL protocol prefix from P4PORT or fix the TLS settings.
??? SSL プロトコルで繋がんない?
tcp:{address}:1666
繋がったァァァ!?!??
TLS 設定とはなんぞや?
ついにTLS 1.0/1.1の無効化が決定!影響や確認・対応方法とは?
簡単に説明すると、TLSは「暗号化通信をするための手順書」のようなものですが、TLS 1.0/1.1などの古いバージョンには脆弱性がある(一定の条件下であれば暗号解読が可能である)ため、利用は非推奨とされていました。
どうやら脆弱性のある規格のようで。もしかすると yum update でその辺も更新されちゃったのかもしれないですね。
Perforce の設定
Perforce を調べるにもなかなかに文献が少なく苦労します。
SSL and TLS Protocol Versions
p4d -r /opt/perforce/servers/master/root -c"set ssl.tls.version.min=10"
ブログにある通り、一旦 TLS v1.0 でも接続できるように設定。"p4 admin restart" だけじゃ反映されないそうな。めんどくさいので sudo reboot しました。ここでようやく SSL でも接続可能に。
P4V クライアントの更新
Version: P4V/NTX64/2020.2/2028073