Description
What is the current behavior?
Version: 8.7.1
When using heroku container:release
, we periodically run into the following errors:
ECONNRESET
Releasing images ... to ... done
Running release command...
[heroku-exec] Starting
...
▸ ECONNRESET: aborted
404 Channel is not registered.
Running release command...
▸ HTTP Error 404 for GET
▸ https://release-output.heroku.com/...
▸ Channel is not registered.
What is the expected behavior?
Streaming logs should be resilient to connection resets per the API docs:
Clients should be prepared to handle disconnects and can resume the stream by sending a Range header (for text/plain) or a Last-Event-Id header (for text/event-stream)
Releasing should be resilient to the race condition on the underlying Heroku platform:
To understand it better let me explain the whole situation- This is some sort of race condition. When using release phase, each new release has a release URL set at creation. However, the actual streaming channel and dyno are created by a separate service which listens on our internal event stream, meaning it can take a couple seconds to happen.
This error means your local client has been too fast and tried streaming before the release was actually created. This is an issue which is known to happen sometimes, but will only impact your local output.