-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Add executionEndpoint to REST function handles #25383
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
base: master
Are you sure you want to change the base?
Conversation
format: uri | ||
pattern: "^https?://" | ||
description: | | ||
Base URL of the execution server where this function should be executed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this execution model defined? Will a driver send multiple batches in parallel (i.e., multiplexed) over the same connection, or will the driver and server follow a sequential/wait model where each batch is acknowledged before sending?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As only scalar functions are supported, the function server is completely stateless, and batches of data may be sent in any order and may be multiplexed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But that will need operator changes for the driver to send multiple batches and process async responses?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These already exist--RemoteProjectOperator
in Java, and analogous C++ operators.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, another think we should consider was to add a limit to the number of rows sent at an operator level (for eg if these functions are sent to ML models) etc
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess that can be implemented in the server itself too in a way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I checked but velox doest seem to have a remote project operator. Is that support left? I do some remote function definitions there though (link)
c9f88d8
to
48ec0f0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
da54833
to
30aed69
Compare
import java.net.URI; | ||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
import static java.util.Objects.requireNonNull; | ||
|
||
@Experimental | ||
public class RestFunctionHandle |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tdcmeehan : Just curious since we are not using this in Prestissimo serialization logic. Do we intend to in the future ?
Description
Adds an
executionEndpoint
and routes accordingly in the RestFunctionNamespaceManager.Motivation and Context
Fix #25331
Impact
Allow distributed function server deployments.
Test Plan
Unit tests have been added in this PR.
Contributor checklist
Release Notes