Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
#584)

* Updated subtree from https://github.com/azure/azure-functions-language-worker-protobuf. Tag:v1.5.7-protofile. Commit:6cccbbfbf84d3c21b21236ae34ec0590c032daad

* Updated subtree from https://github.com/azure/azure-functions-language-worker-protobuf. Tag: v1.5.8-protofile. Commit: 14b2ba5ccb188c160c0f6c519ec1d4521ee36440

* Update FunctionRpc.proto

Updated name to int_x and double_x since int and double are keywords in java and generated grpc code throws error if key words are used as variable names. 
Since GRPC relies on the number for comparing, it is better to rename the variable to anything but int and double here.

Co-authored-by: Shreyas Gopalakrishna <11889130+shreyas-gopalakrishna@users.noreply.github.com>
  • Loading branch information
kaibocai and shreyas-gopalakrishna authored Jun 20, 2022
1 parent dafba19 commit 30a2900
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 34 deletions.
14 changes: 14 additions & 0 deletions src/main/azure-functions-language-worker-protobuf/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
8 changes: 0 additions & 8 deletions src/main/azure-functions-language-worker-protobuf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,6 @@ From within the Azure Functions language worker repo:
- `git commit -m "Updated subtree from https://github.com/azure/azure-functions-language-worker-protobuf. Tag: <tag-name>. Commit: <commit hash>"`
- `git push`

## Releasing a Language Worker Protobuf version

1. Draft a release in the GitHub UI
- 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`

## Consuming FunctionRPC.proto
*Note: Update versionNumber before running following commands*

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,21 @@ 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 +49,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 @@ -78,22 +78,28 @@ message StreamingMessage {

// Worker indexing message types
FunctionsMetadataRequest functions_metadata_request = 29;
FunctionMetadataResponses function_metadata_responses = 30;
FunctionMetadataResponse function_metadata_response = 30;

// 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 @@ -107,17 +113,42 @@ 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
message WorkerInitResponse {
// Version of worker
// NOT USED
// TODO: Remove from protobuf during next breaking change release
string worker_version = 1;

// A map of worker supported features/capabilities
map<string, string> capabilities = 2;

// Status of the response
StatusResult result = 3;

// Worker metadata captured for telemetry purposes
WorkerMetadata worker_metadata = 4;
}

message WorkerMetadata {
// The runtime/stack name
string runtime_name = 1;

// The version of the runtime/stack
string runtime_version = 2;

// The version of the worker
string worker_version = 3;

// The worker bitness/architecture
string worker_bitness = 4;

// Optional additional custom properties
map<string, string> custom_properties = 5;
}

// Used by the host to determine success/failure/cancellation
Expand All @@ -128,6 +159,7 @@ message StatusResult {
Success = 1;
Cancelled = 2;
}

// Status for the given result
Status status = 4;

Expand All @@ -141,9 +173,8 @@ 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
// NOT USED
// TODO: Remove from protobuf during next breaking change release
message WorkerHeartbeat {}

// Warning before killing the process after grace_period
Expand Down Expand Up @@ -176,24 +207,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 All @@ -220,7 +252,17 @@ message CloseSharedMemoryResourcesResponse {
map<string, bool> close_map_results = 1;
}

// Host tells the worker to load a Function
// Host tells the worker to load a list of Functions
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)
string function_id = 1;
Expand Down Expand Up @@ -252,7 +294,7 @@ message RpcFunctionMetadata {

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

// Script file specified
string script_file = 2;

Expand All @@ -273,6 +315,17 @@ message RpcFunctionMetadata {

// Raw binding info
repeated string raw_bindings = 10;

// unique function identifier (avoid name collisions, facilitate reload case)
string function_id = 13;

// A flag indicating if managed dependency is enabled or not
bool managed_dependency_enabled = 14;

// Properties for function metadata
// They're usually specific to a worker and largely passed along to the controller API for use
// outside the host
map<string,string> Properties = 16;
}

// Host tells worker it is ready to receive metadata
Expand All @@ -282,12 +335,15 @@ message FunctionsMetadataRequest {
}

// Worker sends function metadata back to host
message FunctionMetadataResponses {
message FunctionMetadataResponse {
// list of function indexing responses
repeated FunctionLoadRequest function_load_requests_results = 1;
repeated RpcFunctionMetadata function_metadata_results = 1;

// status of overall metadata request
StatusResult result = 2;

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

// Host requests worker to invoke a Function
Expand Down Expand Up @@ -464,7 +520,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 @@ -515,7 +571,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 @@ -525,6 +581,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.
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.
string type = 5;
}

// Http cookie type. Note that only name and value are used for Http requests
Expand Down Expand Up @@ -569,7 +633,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 30a2900

Please sign in to comment.