-
Notifications
You must be signed in to change notification settings - Fork 171
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
Separate Job Creation Step #429
Comments
I am onboard with this particularly when considering that a lot of the recent issues experienced with broadcasting using nodes on Rinkeby have been oriented around job transactions being confirmed, but the stream being inaccessible due to networking issues (often relating to inaccessible bootnodes). Ideally, you would want to know that your stream is accessible to the rest of the network before you spend money on creating an on-chain job to have your stream transcoded. I also like how by separating on-chain job creation from stream creation, we would also separate a desire for your stream to be transcoded from a desire to create a stream in general (right now those intents are combined and as a user you declare both intents with a single action). |
I like it. What about making this configurable (and default to separate job creation)?
|
My only question here is what parameters do we allow users to set when creating jobs? Allowing users to set |
I have a couple reactions to this:
|
Agreed, this would also help for testing/devenv. We could also trigger jobs via a special RTMP connection string, but I'd prefer to also do that in conjunction with a command-line flag enabling the feature, to prevent CSRF-type attacks.
Currently, we set the segment price, the transcoding profiles and the deposit amount. We could certainly add other params, including
Yes, there's no real coupling as far as the smart-contract protocol goes, but it is a workflow change on the node with significant implications.
Correct. This proposal has a hard dependency on delayed broadcasting, which is in turn dependent now on #430.
I was going to set up a separate ticket with the implementation details, but this is how I was thinking of job selection working: the ingest would take a stream along the lines of @yondonfu 's point about trying to view/run a stream before submitting a job is a good one, and segues into @jozanza 's suggestion of a configurable StreamID. While we can already view off-chain streams via the p2p relay network, I think we have to be a little careful about how to generate and identify the stream without inadvertent side-effects (eg, aliasing an existing stream). Now that it seems we're all onboard with the high-level workflow changes, we can figure out these details. |
as a first step it might be enough to just keep the rtmp <streamID/jobID> alive for a time that allows recovery of the rtmp source. If you started a stream and only lost connection for a moment there is no need to create a new on-chain job description. a couple of moments later it might come back on and continues. Make the broadcaster wait n amount of time before he timeouts a stream would be my call |
We don't have jobs anymore with Streamflow. |
Right now we create a job automatically when a RTMP stream comes in. Should we separate out the step of creating a job, and make it an explicit operation that the user has to do?
The current behavior is nice in that it's one fewer step for the user to engage in before starting a broadcast. However it has a few shortcomings:
Separating out the job from the incoming stream would also allow broadcasters to configure and confirm a job in advance, which might help for large/planned events, or features such as delayed broadcasting #316 . Less chance for eg, a tx failure just when an event is supposed to start.
A manual job creation step is less of a stretch when considering the steps the user still has to take anyway before creating the job: depositing ETH, setting a segment price, ABR preferences, confirming the gas price, etc.
A
livepeer_cli
wizard could guide users through this process, but the user doesn't need direct access to a running Livepeer node at all, just the Eth keys used for the job. So this could also be done with a really nice web3 UI. The possibilities are even richer when considering features such as livepeer/protocol#203 .The text was updated successfully, but these errors were encountered: