Skip to content

Commit

Permalink
Merge pull request #72 from Azure/dev
Browse files Browse the repository at this point in the history
Merge dev -> main
  • Loading branch information
madelinegordon authored May 27, 2022
2 parents 245e640 + 24fed0e commit 7cce215
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 27 deletions.
14 changes: 14 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# See https://help.github.com/articles/about-codeowners/
# for more info about CODEOWNERS file
#
# It uses the same pattern rule for gitignore file
# https://git-scm.com/docs/gitignore#_pattern_format



# AZURE FUNCTIONS TEAM
# For all file changes, github would automatically
# include the following people in the PRs.
# Language owners should get notified of any new changes to the proto file.

src/proto/FunctionRpc.proto @vrdmr @gavin-aguiar @YunchuWang @surgupta-msft @satvu @ejizba @alrod @anatolib @kaibocai @shreyas-gopalakrishna @amamounelsayed @Francisco-Gamino
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ From within the Azure Functions language worker repo:
- Be sure to include details of the release
2. Create a release version, following semantic versioning guidelines ([semver.org](https://semver.org/))
3. Tag the version with the pattern: `v<M>.<m>.<p>-protofile` (example: `v1.1.0-protofile`)
3. Merge `dev` to `master`
4. Merge `dev` to `main`
5. Run the release you'd created

## Consuming FunctionRPC.proto
*Note: Update versionNumber before running following commands*
Expand Down
64 changes: 38 additions & 26 deletions src/proto/FunctionRpc.proto
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,18 @@ message StreamingMessage {
oneof content {

// Worker initiates stream
StartStream start_stream = 20;
StartStream start_stream = 20;

// Host sends capabilities/init data to worker
WorkerInitRequest worker_init_request = 17;
// Worker responds after initializing with its capabilities & status
WorkerInitResponse worker_init_response = 16;

// Worker periodically sends empty heartbeat message to host
WorkerHeartbeat worker_heartbeat = 15;

// Host sends terminate message to worker.
// Worker terminates if it can, otherwise host terminates after a grace period
WorkerTerminate worker_terminate = 14;

// Add any worker relevant status to response
// Host periodically sends status request to the worker
WorkerStatusRequest worker_status_request = 12;
WorkerStatusResponse worker_status_response = 13;

Expand All @@ -49,25 +46,25 @@ message StreamingMessage {

// Worker requests a desired action (restart worker, reload function)
WorkerActionResponse worker_action_response = 7;

// Host sends required metadata to worker to load function
FunctionLoadRequest function_load_request = 8;
// Worker responds after loading with the load result
FunctionLoadResponse function_load_response = 9;

// Host requests a given invocation
InvocationRequest invocation_request = 4;

// Worker responds to a given invocation
InvocationResponse invocation_response = 5;

// Host sends cancel message to attempt to cancel an invocation.
// Host sends cancel message to attempt to cancel an invocation.
// If an invocation is cancelled, host will receive an invocation response with status cancelled.
InvocationCancel invocation_cancel = 21;

// Worker logs a message back to the host
RpcLog rpc_log = 2;

FunctionEnvironmentReloadRequest function_environment_reload_request = 25;

FunctionEnvironmentReloadResponse function_environment_reload_response = 26;
Expand All @@ -82,21 +79,24 @@ message StreamingMessage {

// Host sends required metadata to worker to load functions
FunctionLoadRequestCollection function_load_request_collection = 31;

// Host gets the list of function load responses
FunctionLoadResponseCollection function_load_response_collection = 32;
}
}

// Process.Start required info
// connection details
// protocol type
// protocol version
// protocol version

// Worker sends the host information identifying itself
message StartStream {
// id of the worker
string worker_id = 2;
}

// Host requests the worker to initialize itself
// Host requests the worker to initialize itself
message WorkerInitRequest {
// version of the host sending init request
string host_version = 1;
Expand All @@ -110,6 +110,9 @@ message WorkerInitRequest {

// Full path of worker.config.json location
string worker_directory = 4;

// base directory for function app
string function_app_directory = 5;
}

// Worker responds with the result of initializing itself
Expand Down Expand Up @@ -144,11 +147,6 @@ message StatusResult {
repeated RpcLog logs = 3;
}

// TODO: investigate grpc heartbeat - don't limit to grpc implemention

// Message is empty by design - Will add more fields in future if needed
message WorkerHeartbeat {}

// Warning before killing the process after grace_period
// Worker self terminates ..no response on this
message WorkerTerminate {
Expand Down Expand Up @@ -179,24 +177,25 @@ message FileChangeEventRequest {

// Indicates whether worker reloaded successfully or needs a restart
message WorkerActionResponse {
// indicates whether a restart is needed, or reload succesfully
// indicates whether a restart is needed, or reload successfully
enum Action {
Restart = 0;
Reload = 1;
}

// action for this response
Action action = 1;

// text reason for the response
string reason = 2;
}

// NOT USED
message WorkerStatusRequest{
// Used by the host to determine worker health
message WorkerStatusRequest {
}

// NOT USED
// Worker responds with status message
// TODO: Add any worker relevant status to response
message WorkerStatusResponse {
}

Expand Down Expand Up @@ -228,6 +227,11 @@ message FunctionLoadRequestCollection {
repeated FunctionLoadRequest function_load_requests = 1;
}

// Host gets the list of function load responses
message FunctionLoadResponseCollection {
repeated FunctionLoadResponse function_load_responses = 1;
}

// Load request of a single Function
message FunctionLoadRequest {
// unique function identifier (avoid name collisions, facilitate reload case)
Expand Down Expand Up @@ -260,7 +264,7 @@ message RpcFunctionMetadata {

// base directory for the Function
string directory = 1;

// Script file specified
string script_file = 2;

Expand Down Expand Up @@ -304,7 +308,7 @@ message FunctionMetadataResponse {
StatusResult result = 2;

// if set to true then host will perform indexing
bool useDefaultMetadataIndexing = 3;
bool use_default_metadata_indexing = 3;
}

// Host requests worker to invoke a Function
Expand Down Expand Up @@ -481,7 +485,7 @@ message BindingInfo {
DataType data_type = 4;
}

// Used to send logs back to the Host
// Used to send logs back to the Host
message RpcLog {
// Matching ILogger semantics
// https://github.com/aspnet/Logging/blob/9506ccc3f3491488fe88010ef8b9eb64594abf95/src/Microsoft.Extensions.Logging/Logger.cs
Expand Down Expand Up @@ -532,7 +536,7 @@ message RpcLog {
map<string, TypedData> propertiesMap = 9;
}

// Encapsulates an Exception
// Encapsulates an Exception
message RpcException {
// Source of the exception
string source = 3;
Expand All @@ -542,6 +546,14 @@ message RpcException {

// Textual message describing the exception
string message = 2;

// Worker specifies whether exception is a user exception,
// for purpose of application insights logging. Defaults to false.
optional bool is_user_exception = 4;

// Type of exception. If it's a user exception, the type is passed along to app insights.
// Otherwise, it's ignored for now.
optional string type = 5;
}

// Http cookie type. Note that only name and value are used for Http requests
Expand Down Expand Up @@ -586,7 +598,7 @@ message RpcHttpCookie {
// TODO - solidify this or remove it
message RpcHttp {
string method = 1;
string url = 2;
string url = 2;
map<string,string> headers = 3;
TypedData body = 4;
map<string,string> params = 10;
Expand Down

0 comments on commit 7cce215

Please sign in to comment.