Macで開発していたらHostNameの参照が遅いという事がありました。
例えばJavaのLoggerのLogbackではHostnameを自動で取得します。
HOSTNAME変数とCONTEXT_NAME変数はよく使われるので、コンテキストスコープを持つ変数として自動的に定義されます。
自分のHostNameを正しく解決できないと10秒ほどBlockされるので、テストケースが100個あるとその都度待たされてしまうわけです。
実際に詰まっているのを確認したら、IPv6のアドレスを求めるところで詰まってました。
"pool-1-thread-1-ScalaTest-running-FormDefinitionsTest" #12 prio=5 os_prio=31 tid=0x00007fc13882d800 nid=0xa903 runnable |
jshellで確認できます。
jshell> InetAddress localhost = InetAddress.getLocalHost(); |
原因と解決策
次のコマンドを実行した時に、scutil --get HostName
の結果が空なのが原因です。
scutil --get HostName # |
次のコマンドで設定する事で対応できます。
sudo scutil --set HostName $(scutil --get LocalHostName)
jshell> InetAddress localhost = InetAddress.getLocalHost(); |
.localが無くなりますが、まぁ気にしない方向で。
検索すると/etc/hosts
にSN0298 127.0.0.1
のようにする解決策を見かけます。この方法でも良いのですが、それだと上記のコードでDHCPのアドレスが取得できなくなります。