lostluck commented on issue #24470:
URL: https://github.com/apache/beam/issues/24470#issuecomment-1335654582

   So there are two issues here.
   
   1. Turns out that debian-bullseye as a base container might not have the 
latest and greatest glibc (this is WAI probably, due to debian's ethos).
   2. Boot loader container messages aren't discoverable.
   
   The first has a few options: Option 1: Custom containers. That's always an 
option and lets any container be used as the worker container, as long as the 
entrypoint is the bootloader to handle the rest of the container contract.
   
   Option 2: Disable linking by turning off CGO, as already described.
    
   We aren't likely to move off of debian as the container base anytime soon, 
but we could expand 
https://beam.apache.org/documentation/sdks/go-cross-compilation/ with a bit of 
this information.
   
   The second is that we had to *hunt* for the root cause. That's never good. 
It hurts everyone. Ideally, the error is elevated properly, and tells you where 
to find answers.
   
   In this case, since we have dedicated loaders per language, they could point 
to relevant places on the beam site, like 
https://beam.apache.org/documentation/sdks/go-cross-compilation/ or similar. 
That's where the documentation for this should live. As for how to elevate it.
   
   ---------
   All uses of the Beam Go SDK use the same containers, so the fix would be in 
the repo.
   
   In principle, the boot loader could connect to the FnAPI logging service to 
make the failure announcement. That should elevate it in the Dataflow logs (and 
all other SDK uses with a FnAPI). It's not entirely clear to me why we don't 
already beyond it's not been needed before.
   
   So the initial arg log is here: 
https://github.com/apache/beam/blob/master/sdks/go/container/boot.go#L100
   
   And when the exec call fails, it's logged here: 
https://github.com/apache/beam/blob/master/sdks/go/container/boot.go#L169
   
   I'm not familiar with how the logging gets elevated to 
errors/fatals/warnings etc from the container logs. The boot loaders don't use 
anything particularly fancy for logging, just the standard library "log" 
package, so it wouldn't hurt to upgrade it somewhat. I've already been 
considering starting integration with the hopefully upcoming structured log 
library for Go...
   
   So that would be my suggestion: We switch the boot loaders to connect to the 
FnAPI log service, and direct users to a beam site page where we can catalog 
issues and solutions.
   
   ----
   
   The bit that we don't have help for is relating the actual link error 
easily. Redirecting the binary's StdErr might work, but could lead to other 
noise going across the logging interface, or other duplication or overrun.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to