goreman
goreman copied to clipboard
goreman is eating empty lines
when run directly, you'll note that there are two empty lines at the end, but not in goreman:
sridharr@dhcp-26 ~/d/c/aura> make
/Users/sridharr/go/bin/goreman start
2012/10/01 20:41:10 [web] START
2012/10/01 20:41:10 [web] https://api.dropbox.com/1/account/info?
2012/10/01 20:41:10 [web] {ReferralLink: DisplayName: Uid:0 Country: QuotaInfo:{Shared:0 Quota:0 Normal:0}}
2012/10/01 20:41:10 [web] QUIT
sridharr@dhcp-26 ~/d/c/aura> ./aura
https://api.dropbox.com/1/account/info?
{ReferralLink: DisplayName: Uid:0 Country: QuotaInfo:{Shared:0 Quota:0 Normal:0}}
sridharr@dhcp-26 ~/d/c/aura>
Sorry for delay. Is this an issue that related logger?
To clarify: It appears to be intentional that goreman eats empty lines. There's an explicit check for line length being greater than one including the newline. Unfortunately, it's got a bug, so it also eats single-byte non-newline writes, but emits a blank line (with no header) when it gets one.
Confirming that this behaviour is still present, it was even reified (and subtly changed) by #54.
Interesting! Do you have a reproducer/test case? I tried to come up with some simple tests for the line handling behavior that PR 54 was addressing, and it passed those, but it's possible that I missed some cases.
The underlying problem is probably formally-impossible; determining whether or not more of a line is expected to arrive later is difficult at best.
Oh, I missed that that was your PR! 😅
The particular case we’re seeing is using minio (for s3 emulation) within our Procfile. At startup it emits a block of information about the server it’s running (same behaviour in foreman, and this screenshot shows it running inside overmind):
within goreman, it’s dropping those blank lines:
I do recognise that the “grouping output that is attempting to incrementally write itself” is probably the trickier, and more important, problem!
On further study: This is actually intentional! See 8ddb825d. Possibly it shouldn't be, or should be optional, but it's actually intentional that empty lines get dropped.