-
Notifications
You must be signed in to change notification settings - Fork 176
5.4 builds fail under Linux due to ZenServer timeout #357
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
Comments
There were multiple changes in recent docker versions wrt IPv6. See v26.0.0 release notes. I think it is enabled now.
I personally do not use However I don't quite understand how |
Oh, nice! I guess that would be a third alternative then: we could specify 26.0.0 as the minimum required Docker version for building images for 5.4. That would actually be much nicer than either of my proposed options above, and we could simply document the need for the daemon configuration steps for those users who are unable to update to the latest version of Docker for one reason or another.
I haven't tested in an IPv4-only environment to explicitly confirm this, but my understanding is that none of these options (configuring the daemon prior to 26.0.0, using host networking mode, or using 26.0.0) will allow communication over |
I've just tested docker 26.1.0 (my distro doesn't offer me 26.0.0 out of the box, and I just wanted to do a quick test). Indeed, there is an IPv6 address on loopback interface inside container without any additional efforts. |
After hitting exactly the same issue, I vote for requiring Docker >=26. Because users will need this anyway if they want to run their images, even if we workaround the build process with |
Yeah, I was wondering about that (but wasn't sure, so didn't comment at the time), but since this will also affect using the container image outside the ue4-docker-controlled environment, setting a minimum Docker version seems less fragile than maintaining ZenServer source patches. If they need it, someone can do a custom-source build from 5.4 with such patches if they want, so the version-requirement should not be a hard-blockage. |
Okay, I've added a warning to the Given that this issue impacts users' ability to run cooks inside built images, do you think it would be prudent to include the warning in the |
We can even add |
Excellent idea! That way, users who are stuck using older versions of the Docker daemon and need to perform manual configuration changes to enable IPv6 can verify that the config changes are working as expected. It's worth noting that the |
You want to do UPD: Hmm... For me, |
Oh nice, I didn't know about Weird, I just ran a fresh Ubuntu 22.04 container with Docker 26.1.4 and installed the inetutils-ping package, and the non-suffixed version doesn't resolve the loopback:
|
Okay, I've added an IPv6 diagnostic and updated the warning message to include instructions on how to run the diagnostic. I've also surfaced the warning in the |
So, looks like the issue can be closed.
No idea what's going on here, exactly the same steps work for me. I am not that good at Linux networking to explain what affects this. I can mention that my box has a working IPv6 host network. |
When building Linux container images for Unreal Engine 5.4.1, I discovered that DDC generation fails due to a timeout when attempting to communicate with the local ZenServer instance:
During the cook process, the Editor launches ZenServer as a child process and attempts to communicate with it via the IPv6 loopback address
[::1]
. Unfortunately, Docker does not enable IPv6 support by default, and users need to manually configure the Docker daemon to enable it. As a result, when building images under the default Docker daemon configuration, communication with the ZenServer fails and the cook process terminates unsuccessfully.I've reached out to my contacts at Epic to see if this can be resolved for 5.5, but in the meantime, there are two ways to successfully build Linux images for Unreal Engine 5.4 with DDC enabled:
Configure the Docker daemon to enable IPv6 for the default bridge network
Enable host networking mode by passing
--network=host
to thedocker build
command, bypassing the bridge network and sidestepping the lack of IPv6 supportThe latter option would be the easiest to implement in ue4-docker (and the most convenient for users), although the former is arguably the more "correct" solution. We could either add
--network=host
to our build commands under Linux, or modify theue4-docker setup
command to enable IPv6 support and require users to run that before building images for 5.4.I'm currently leaning towards the
--network=host
option myself, do you have a preference @slonopotamus?The text was updated successfully, but these errors were encountered: