tree 1d94b80f9f547fc7ae84ef01df44d8dd53b5b0b2
parent a7f2a2eceaaeb4e101c6fd51a6868b48c8d1214f
author Chris Bartholomew <chris.bartholomew@kafkaesque.io> 1612231035 -0500
committer GitHub <noreply@github.com> 1612231035 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgGLF7CRBK7hj4Ov3rIwAAdHIIAC1OSH/ETaypPUzGs4KgnIpX
 7xKN9lZ57lBAm/DrXgr1Jtir5fMzvEF0lncJuGyTOAoq07dR9CTwZhFua1kS7iuS
 N/xj9gbNb2dYGv/SXW7JTQA8xEOpkloE0CN00qXL6thIFR6djvv6+WYp2bW3sPvG
 rKgGo1hG3KNcH4W1XBqaoyxCVxoVArM4GxQMsZ2fxrCmeT909fuAygrCRTiq77KF
 hBXDfRDVaPDhbSrvvhiJPfFXKEZfx05DCPAzlEWawPGIzlk14qj6g6nKDSuiNN08
 SIju0bZnk/6vcEaDn6EIJw8j1nmwP3pMk1x/rH2TE/n0qWsg5T61A5wAkx7DCZU=
 =Wvx4
 -----END PGP SIGNATURE-----
 

Stream storage endpoint from hostname to return fully-qualified name in Java 11+

Descriptions of the changes in this PR:

Update how hostname is retrieved when using hostname as identifier for stream storage to work consistenly between Java 8 and Java 11.

### Motivation

Between Java 8 and Java 11, the value returned by `InetAddress.getLocalHost().getHostName()` changed from being the fully qualified name to just the short hostname. When running in a Kubernetes environment, it is necessary for the endpoint to be identied by its fully qualified name so that clients can connect. 

This same change was made in Pulsar in https://github.com/apache/pulsar/pull/6235.

I have tested this change in Kubernetes environment using Java 11.

### Changes

This is a simple change from `getHostName` to `getCanonicalHostName()`.

Master Issue: #2559



Reviewers: Andrey Yegorov <None>, Enrico Olivelli <eolivelli@gmail.com>

This closes #2571 from cdbartholomew/stream-storage-endpoint-java11