indexify 0.3.18__py3-none-any.whl → 0.3.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. indexify/cli/cli.py +3 -17
  2. indexify/executor/api_objects.py +12 -0
  3. indexify/executor/downloader.py +4 -1
  4. indexify/executor/executor.py +51 -29
  5. indexify/executor/function_executor/function_executor.py +24 -11
  6. indexify/executor/function_executor/function_executor_state.py +9 -1
  7. indexify/executor/function_executor/function_executor_states_container.py +3 -1
  8. indexify/executor/function_executor/function_executor_status.py +2 -0
  9. indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py +6 -0
  10. indexify/executor/function_executor/single_task_runner.py +15 -11
  11. indexify/executor/function_executor/task_output.py +35 -2
  12. indexify/executor/grpc/completed_tasks_container.py +26 -0
  13. indexify/executor/grpc/function_executor_controller.py +421 -0
  14. indexify/executor/grpc/state_reconciler.py +24 -34
  15. indexify/executor/grpc/state_reporter.py +35 -32
  16. indexify/executor/grpc/task_controller.py +449 -0
  17. indexify/executor/metrics/task_reporter.py +14 -0
  18. indexify/executor/task_reporter.py +95 -4
  19. indexify/executor/task_runner.py +1 -0
  20. indexify/proto/executor_api.proto +63 -5
  21. indexify/proto/executor_api_pb2.py +40 -30
  22. indexify/proto/executor_api_pb2.pyi +118 -3
  23. indexify/proto/executor_api_pb2_grpc.py +47 -0
  24. {indexify-0.3.18.dist-info → indexify-0.3.19.dist-info}/METADATA +1 -1
  25. {indexify-0.3.18.dist-info → indexify-0.3.19.dist-info}/RECORD +27 -24
  26. {indexify-0.3.18.dist-info → indexify-0.3.19.dist-info}/WHEEL +0 -0
  27. {indexify-0.3.18.dist-info → indexify-0.3.19.dist-info}/entry_points.txt +0 -0
@@ -4,7 +4,7 @@ syntax = "proto3";
4
4
  // Existing clients won't find the service if the package name changes.
5
5
  package executor_api_pb;
6
6
 
7
- // ===== ReportExecutorState RPC =====
7
+ // ===== report_executor_state RPC =====
8
8
 
9
9
  enum GPUModel {
10
10
  GPU_MODEL_UNKNOWN = 0;
@@ -54,7 +54,10 @@ enum FunctionExecutorStatus {
54
54
  FUNCTION_EXECUTOR_STATUS_RUNNING_TASK = 5;
55
55
  FUNCTION_EXECUTOR_STATUS_UNHEALTHY = 6;
56
56
  FUNCTION_EXECUTOR_STATUS_STOPPING = 7;
57
+ // FE is stopped but can be started up.
57
58
  FUNCTION_EXECUTOR_STATUS_STOPPED = 8;
59
+ // FE is stopped forever, all resources are freed.
60
+ FUNCTION_EXECUTOR_STATUS_SHUTDOWN = 9;
58
61
  }
59
62
 
60
63
  // Immutable information that identifies and describes a Function Executor.
@@ -67,11 +70,17 @@ message FunctionExecutorDescription {
67
70
  optional string image_uri = 6;
68
71
  repeated string secret_names = 7;
69
72
  optional HostResources resource_limits = 8;
73
+ // Timeout for customer code duration during FE creation.
74
+ optional uint32 customer_code_timeout_ms = 9;
70
75
  }
71
76
 
72
77
  message FunctionExecutorState {
73
78
  optional FunctionExecutorDescription description = 1;
74
79
  optional FunctionExecutorStatus status = 2;
80
+ // Human readable message clarifying the status.
81
+ // Currently it contains error message from customer code
82
+ // if status is FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_CUSTOMER_ERROR.
83
+ optional string status_message = 3;
75
84
  }
76
85
 
77
86
  enum ExecutorStatus {
@@ -114,7 +123,7 @@ message ReportExecutorStateRequest {
114
123
  message ReportExecutorStateResponse {
115
124
  }
116
125
 
117
- // ===== GetDesiredExecutorStates RPC =====
126
+ // ===== get_desired_executor_states RPC =====
118
127
  message Task {
119
128
  optional string id = 1;
120
129
  optional string namespace = 2;
@@ -124,7 +133,7 @@ message Task {
124
133
  optional string graph_invocation_id = 6;
125
134
  optional string input_key = 8;
126
135
  optional string reducer_output_key = 9;
127
- optional string timeout_ms = 10;
136
+ optional uint32 timeout_ms = 10;
128
137
  }
129
138
 
130
139
  message TaskAllocation {
@@ -147,6 +156,55 @@ message DesiredExecutorState {
147
156
  optional uint64 clock = 3;
148
157
  }
149
158
 
159
+ // ===== report_task_outcome RPC =====
160
+ enum TaskOutcome {
161
+ TASK_OUTCOME_UNKNOWN = 0;
162
+ TASK_OUTCOME_SUCCESS = 1;
163
+ TASK_OUTCOME_FAILURE = 2;
164
+ }
165
+
166
+ message DataPayload {
167
+ optional string path = 1;
168
+ optional uint64 size = 2;
169
+ optional string sha256_hash = 3;
170
+ }
171
+
172
+ enum OutputEncoding {
173
+ OUTPUT_ENCODING_UNKNOWN = 0;
174
+ OUTPUT_ENCODING_JSON = 1;
175
+ OUTPUT_ENCODING_PICKLE = 2;
176
+ OUTPUT_ENCODING_BINARY = 3;
177
+ }
178
+
179
+ message ReportTaskOutcomeRequest {
180
+ optional string task_id = 1;
181
+ optional string namespace = 2;
182
+ optional string graph_name = 3;
183
+ optional string function_name = 4;
184
+ optional string graph_invocation_id = 6;
185
+ optional TaskOutcome outcome = 7;
186
+ optional string invocation_id = 8;
187
+ optional string executor_id = 9;
188
+ optional bool reducer = 10;
189
+
190
+ // Edges that the function wants the invocation to be routed to.
191
+ // Previously called router_edges.
192
+ repeated string next_functions = 11;
193
+ // Outputs of the function.
194
+ repeated DataPayload fn_outputs = 12;
195
+ // Standard output and error streams of the function.
196
+ optional DataPayload stdout = 14;
197
+ optional DataPayload stderr = 15;
198
+ // Output encoding of all the outputs of a function have to be same.
199
+ optional OutputEncoding output_encoding = 13;
200
+ // This allows us to change how we encode the output from functions
201
+ // and serialize them into storage.
202
+ optional uint64 output_encoding_version = 5;
203
+ }
204
+
205
+ message ReportTaskOutcomeResponse {
206
+ }
207
+
150
208
  // Internal API for scheduling and running tasks on Executors. Executors are acting as clients of this API.
151
209
  // Server is responsible for scheduling tasks on Executors and Executors are responsible for running the tasks.
152
210
  //
@@ -165,6 +223,6 @@ service ExecutorAPI {
165
223
  // Deprecated HTTP API is used to download the serialized graph and task inputs.
166
224
  rpc get_desired_executor_states(GetDesiredExecutorStatesRequest) returns (stream DesiredExecutorState) {}
167
225
 
168
- // Task outcome is currently reported via deprecated HTTP API. We're going to migrate task output reporting to gRPC
169
- // when we move S3 downloads and uploads to Executor.
226
+ // Report the outcome of a task.
227
+ rpc report_task_outcome(ReportTaskOutcomeRequest) returns (ReportTaskOutcomeResponse) {}
170
228
  }
@@ -19,7 +19,7 @@ _sym_db = _symbol_database.Default()
19
19
 
20
20
 
21
21
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
- b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"e\n\x0cGPUResources\x12\x12\n\x05\x63ount\x18\x01 \x01(\rH\x00\x88\x01\x01\x12-\n\x05model\x18\x02 \x01(\x0e\x32\x19.executor_api_pb.GPUModelH\x01\x88\x01\x01\x42\x08\n\x06_countB\x08\n\x06_model"\xc2\x01\n\rHostResources\x12\x16\n\tcpu_count\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmemory_bytes\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\ndisk_bytes\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12/\n\x03gpu\x18\x04 \x01(\x0b\x32\x1d.executor_api_pb.GPUResourcesH\x03\x88\x01\x01\x42\x0c\n\n_cpu_countB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xbb\x01\n\x0f\x41llowedFunction\x12\x16\n\tnamespace\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngraph_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x10\n\x0e_graph_version"\xed\x02\n\x1b\x46unctionExecutorDescription\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x16\n\timage_uri\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x14\n\x0csecret_names\x18\x07 \x03(\t\x12<\n\x0fresource_limits\x18\x08 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x0c\n\n_image_uriB\x12\n\x10_resource_limits"\xb8\x01\n\x15\x46unctionExecutorState\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12<\n\x06status\x18\x02 \x01(\x0e\x32\'.executor_api_pb.FunctionExecutorStatusH\x01\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_status"\x9f\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x64\x65velopment_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06\x66lavor\x18\x04 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorFlavorH\x03\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x05\x88\x01\x01\x12;\n\x0e\x66ree_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12;\n\x11\x61llowed_functions\x18\x08 \x03(\x0b\x32 .executor_api_pb.AllowedFunction\x12H\n\x18\x66unction_executor_states\x18\t \x03(\x0b\x32&.executor_api_pb.FunctionExecutorState\x12:\n\x06labels\x18\n \x03(\x0b\x32*.executor_api_pb.ExecutorState.LabelsEntry\x12\x17\n\nstate_hash\x18\x0b \x01(\tH\x07\x88\x01\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_executor_idB\x13\n\x11_development_modeB\x0b\n\t_hostnameB\t\n\x07_flavorB\n\n\x08_versionB\t\n\x07_statusB\x11\n\x0f_free_resourcesB\r\n\x0b_state_hash"l\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x42\x11\n\x0f_executor_state"\x1d\n\x1bReportExecutorStateResponse"\x88\x03\n\x04Task\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tinput_key\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1f\n\x12reducer_output_key\x18\t \x01(\tH\x07\x88\x01\x01\x12\x17\n\ntimeout_ms\x18\n \x01(\tH\x08\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\x0c\n\n_input_keyB\x15\n\x13_reducer_output_keyB\r\n\x0b_timeout_ms"\x7f\n\x0eTaskAllocation\x12!\n\x14\x66unction_executor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x04task\x18\x02 \x01(\x0b\x32\x15.executor_api_pb.TaskH\x01\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_task"K\n\x1fGetDesiredExecutorStatesRequest\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_executor_id"\xb9\x01\n\x14\x44\x65siredExecutorState\x12H\n\x12\x66unction_executors\x18\x01 \x03(\x0b\x32,.executor_api_pb.FunctionExecutorDescription\x12\x39\n\x10task_allocations\x18\x02 \x03(\x0b\x32\x1f.executor_api_pb.TaskAllocation\x12\x12\n\x05\x63lock\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_clock*\x86\x03\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12"\n\x1eGPU_MODEL_NVIDIA_TESLA_T4_16GB\x10\n\x12$\n GPU_MODEL_NVIDIA_TESLA_V100_16GB\x10\x14\x12\x1d\n\x19GPU_MODEL_NVIDIA_A10_24GB\x10\x1e\x12\x1f\n\x1bGPU_MODEL_NVIDIA_A6000_48GB\x10(\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_40GB\x10\x32\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_80GB\x10\x33\x12"\n\x1eGPU_MODEL_NVIDIA_A100_PCI_40GB\x10\x34\x12#\n\x1fGPU_MODEL_NVIDIA_H100_SXM5_80GB\x10<\x12"\n\x1eGPU_MODEL_NVIDIA_H100_PCI_80GB\x10=\x12"\n\x1eGPU_MODEL_NVIDIA_RTX_6000_24GB\x10>*\xa3\x03\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12(\n$FUNCTION_EXECUTOR_STATUS_STARTING_UP\x10\x01\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_CUSTOMER_ERROR\x10\x02\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_PLATFORM_ERROR\x10\x03\x12!\n\x1d\x46UNCTION_EXECUTOR_STATUS_IDLE\x10\x04\x12)\n%FUNCTION_EXECUTOR_STATUS_RUNNING_TASK\x10\x05\x12&\n"FUNCTION_EXECUTOR_STATUS_UNHEALTHY\x10\x06\x12%\n!FUNCTION_EXECUTOR_STATUS_STOPPING\x10\x07\x12$\n FUNCTION_EXECUTOR_STATUS_STOPPED\x10\x08*\xc3\x01\n\x0e\x45xecutorStatus\x12\x1b\n\x17\x45XECUTOR_STATUS_UNKNOWN\x10\x00\x12\x1f\n\x1b\x45XECUTOR_STATUS_STARTING_UP\x10\x01\x12\x1b\n\x17\x45XECUTOR_STATUS_RUNNING\x10\x02\x12\x1b\n\x17\x45XECUTOR_STATUS_DRAINED\x10\x03\x12\x1c\n\x18\x45XECUTOR_STATUS_STOPPING\x10\x04\x12\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x05*d\n\x0e\x45xecutorFlavor\x12\x1b\n\x17\x45XECUTOR_FLAVOR_UNKNOWN\x10\x00\x12\x17\n\x13\x45XECUTOR_FLAVOR_OSS\x10\x01\x12\x1c\n\x18\x45XECUTOR_FLAVOR_PLATFORM\x10\x02\x32\xff\x01\n\x0b\x45xecutorAPI\x12t\n\x15report_executor_state\x12+.executor_api_pb.ReportExecutorStateRequest\x1a,.executor_api_pb.ReportExecutorStateResponse"\x00\x12z\n\x1bget_desired_executor_states\x12\x30.executor_api_pb.GetDesiredExecutorStatesRequest\x1a%.executor_api_pb.DesiredExecutorState"\x00\x30\x01\x62\x06proto3'
22
+ b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"e\n\x0cGPUResources\x12\x12\n\x05\x63ount\x18\x01 \x01(\rH\x00\x88\x01\x01\x12-\n\x05model\x18\x02 \x01(\x0e\x32\x19.executor_api_pb.GPUModelH\x01\x88\x01\x01\x42\x08\n\x06_countB\x08\n\x06_model"\xc2\x01\n\rHostResources\x12\x16\n\tcpu_count\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x19\n\x0cmemory_bytes\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x17\n\ndisk_bytes\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12/\n\x03gpu\x18\x04 \x01(\x0b\x32\x1d.executor_api_pb.GPUResourcesH\x03\x88\x01\x01\x42\x0c\n\n_cpu_countB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xbb\x01\n\x0f\x41llowedFunction\x12\x16\n\tnamespace\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ngraph_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x10\n\x0e_graph_version"\xb1\x03\n\x1b\x46unctionExecutorDescription\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x16\n\timage_uri\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x14\n\x0csecret_names\x18\x07 \x03(\t\x12<\n\x0fresource_limits\x18\x08 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12%\n\x18\x63ustomer_code_timeout_ms\x18\t \x01(\rH\x07\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x0c\n\n_image_uriB\x12\n\x10_resource_limitsB\x1b\n\x19_customer_code_timeout_ms"\xe8\x01\n\x15\x46unctionExecutorState\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12<\n\x06status\x18\x02 \x01(\x0e\x32\'.executor_api_pb.FunctionExecutorStatusH\x01\x88\x01\x01\x12\x1b\n\x0estatus_message\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_statusB\x11\n\x0f_status_message"\x9f\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10\x64\x65velopment_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06\x66lavor\x18\x04 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorFlavorH\x03\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x05\x88\x01\x01\x12;\n\x0e\x66ree_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x06\x88\x01\x01\x12;\n\x11\x61llowed_functions\x18\x08 \x03(\x0b\x32 .executor_api_pb.AllowedFunction\x12H\n\x18\x66unction_executor_states\x18\t \x03(\x0b\x32&.executor_api_pb.FunctionExecutorState\x12:\n\x06labels\x18\n \x03(\x0b\x32*.executor_api_pb.ExecutorState.LabelsEntry\x12\x17\n\nstate_hash\x18\x0b \x01(\tH\x07\x88\x01\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_executor_idB\x13\n\x11_development_modeB\x0b\n\t_hostnameB\t\n\x07_flavorB\n\n\x08_versionB\t\n\x07_statusB\x11\n\x0f_free_resourcesB\r\n\x0b_state_hash"l\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x42\x11\n\x0f_executor_state"\x1d\n\x1bReportExecutorStateResponse"\x88\x03\n\x04Task\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x05 \x01(\tH\x04\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x16\n\tinput_key\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x1f\n\x12reducer_output_key\x18\t \x01(\tH\x07\x88\x01\x01\x12\x17\n\ntimeout_ms\x18\n \x01(\rH\x08\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_graph_versionB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\x0c\n\n_input_keyB\x15\n\x13_reducer_output_keyB\r\n\x0b_timeout_ms"\x7f\n\x0eTaskAllocation\x12!\n\x14\x66unction_executor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x04task\x18\x02 \x01(\x0b\x32\x15.executor_api_pb.TaskH\x01\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_task"K\n\x1fGetDesiredExecutorStatesRequest\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_executor_id"\xb9\x01\n\x14\x44\x65siredExecutorState\x12H\n\x12\x66unction_executors\x18\x01 \x03(\x0b\x32,.executor_api_pb.FunctionExecutorDescription\x12\x39\n\x10task_allocations\x18\x02 \x03(\x0b\x32\x1f.executor_api_pb.TaskAllocation\x12\x12\n\x05\x63lock\x18\x03 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_clock"o\n\x0b\x44\x61taPayload\x12\x11\n\x04path\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04size\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x18\n\x0bsha256_hash\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x07\n\x05_pathB\x07\n\x05_sizeB\x0e\n\x0c_sha256_hash"\x87\x06\n\x18ReportTaskOutcomeRequest\x12\x14\n\x07task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tnamespace\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\ngraph_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x32\n\x07outcome\x18\x07 \x01(\x0e\x32\x1c.executor_api_pb.TaskOutcomeH\x05\x88\x01\x01\x12\x1a\n\rinvocation_id\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x18\n\x0b\x65xecutor_id\x18\t \x01(\tH\x07\x88\x01\x01\x12\x14\n\x07reducer\x18\n \x01(\x08H\x08\x88\x01\x01\x12\x16\n\x0enext_functions\x18\x0b \x03(\t\x12\x30\n\nfn_outputs\x18\x0c \x03(\x0b\x32\x1c.executor_api_pb.DataPayload\x12\x31\n\x06stdout\x18\x0e \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x31\n\x06stderr\x18\x0f \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12=\n\x0foutput_encoding\x18\r \x01(\x0e\x32\x1f.executor_api_pb.OutputEncodingH\x0b\x88\x01\x01\x12$\n\x17output_encoding_version\x18\x05 \x01(\x04H\x0c\x88\x01\x01\x42\n\n\x08_task_idB\x0c\n\n_namespaceB\r\n\x0b_graph_nameB\x10\n\x0e_function_nameB\x16\n\x14_graph_invocation_idB\n\n\x08_outcomeB\x10\n\x0e_invocation_idB\x0e\n\x0c_executor_idB\n\n\x08_reducerB\t\n\x07_stdoutB\t\n\x07_stderrB\x12\n\x10_output_encodingB\x1a\n\x18_output_encoding_version"\x1b\n\x19ReportTaskOutcomeResponse*\x86\x03\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12"\n\x1eGPU_MODEL_NVIDIA_TESLA_T4_16GB\x10\n\x12$\n GPU_MODEL_NVIDIA_TESLA_V100_16GB\x10\x14\x12\x1d\n\x19GPU_MODEL_NVIDIA_A10_24GB\x10\x1e\x12\x1f\n\x1bGPU_MODEL_NVIDIA_A6000_48GB\x10(\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_40GB\x10\x32\x12#\n\x1fGPU_MODEL_NVIDIA_A100_SXM4_80GB\x10\x33\x12"\n\x1eGPU_MODEL_NVIDIA_A100_PCI_40GB\x10\x34\x12#\n\x1fGPU_MODEL_NVIDIA_H100_SXM5_80GB\x10<\x12"\n\x1eGPU_MODEL_NVIDIA_H100_PCI_80GB\x10=\x12"\n\x1eGPU_MODEL_NVIDIA_RTX_6000_24GB\x10>*\xca\x03\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12(\n$FUNCTION_EXECUTOR_STATUS_STARTING_UP\x10\x01\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_CUSTOMER_ERROR\x10\x02\x12:\n6FUNCTION_EXECUTOR_STATUS_STARTUP_FAILED_PLATFORM_ERROR\x10\x03\x12!\n\x1d\x46UNCTION_EXECUTOR_STATUS_IDLE\x10\x04\x12)\n%FUNCTION_EXECUTOR_STATUS_RUNNING_TASK\x10\x05\x12&\n"FUNCTION_EXECUTOR_STATUS_UNHEALTHY\x10\x06\x12%\n!FUNCTION_EXECUTOR_STATUS_STOPPING\x10\x07\x12$\n FUNCTION_EXECUTOR_STATUS_STOPPED\x10\x08\x12%\n!FUNCTION_EXECUTOR_STATUS_SHUTDOWN\x10\t*\xc3\x01\n\x0e\x45xecutorStatus\x12\x1b\n\x17\x45XECUTOR_STATUS_UNKNOWN\x10\x00\x12\x1f\n\x1b\x45XECUTOR_STATUS_STARTING_UP\x10\x01\x12\x1b\n\x17\x45XECUTOR_STATUS_RUNNING\x10\x02\x12\x1b\n\x17\x45XECUTOR_STATUS_DRAINED\x10\x03\x12\x1c\n\x18\x45XECUTOR_STATUS_STOPPING\x10\x04\x12\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x05*d\n\x0e\x45xecutorFlavor\x12\x1b\n\x17\x45XECUTOR_FLAVOR_UNKNOWN\x10\x00\x12\x17\n\x13\x45XECUTOR_FLAVOR_OSS\x10\x01\x12\x1c\n\x18\x45XECUTOR_FLAVOR_PLATFORM\x10\x02*[\n\x0bTaskOutcome\x12\x18\n\x14TASK_OUTCOME_UNKNOWN\x10\x00\x12\x18\n\x14TASK_OUTCOME_SUCCESS\x10\x01\x12\x18\n\x14TASK_OUTCOME_FAILURE\x10\x02*\x7f\n\x0eOutputEncoding\x12\x1b\n\x17OUTPUT_ENCODING_UNKNOWN\x10\x00\x12\x18\n\x14OUTPUT_ENCODING_JSON\x10\x01\x12\x1a\n\x16OUTPUT_ENCODING_PICKLE\x10\x02\x12\x1a\n\x16OUTPUT_ENCODING_BINARY\x10\x03\x32\xef\x02\n\x0b\x45xecutorAPI\x12t\n\x15report_executor_state\x12+.executor_api_pb.ReportExecutorStateRequest\x1a,.executor_api_pb.ReportExecutorStateResponse"\x00\x12z\n\x1bget_desired_executor_states\x12\x30.executor_api_pb.GetDesiredExecutorStatesRequest\x1a%.executor_api_pb.DesiredExecutorState"\x00\x30\x01\x12n\n\x13report_task_outcome\x12).executor_api_pb.ReportTaskOutcomeRequest\x1a*.executor_api_pb.ReportTaskOutcomeResponse"\x00\x62\x06proto3'
23
23
  )
24
24
 
25
25
  _globals = globals()
@@ -31,14 +31,18 @@ if not _descriptor._USE_C_DESCRIPTORS:
31
31
  DESCRIPTOR._loaded_options = None
32
32
  _globals["_EXECUTORSTATE_LABELSENTRY"]._loaded_options = None
33
33
  _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_options = b"8\001"
34
- _globals["_GPUMODEL"]._serialized_start = 2704
35
- _globals["_GPUMODEL"]._serialized_end = 3094
36
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 3097
37
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 3516
38
- _globals["_EXECUTORSTATUS"]._serialized_start = 3519
39
- _globals["_EXECUTORSTATUS"]._serialized_end = 3714
40
- _globals["_EXECUTORFLAVOR"]._serialized_start = 3716
41
- _globals["_EXECUTORFLAVOR"]._serialized_end = 3816
34
+ _globals["_GPUMODEL"]._serialized_start = 3740
35
+ _globals["_GPUMODEL"]._serialized_end = 4130
36
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 4133
37
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 4591
38
+ _globals["_EXECUTORSTATUS"]._serialized_start = 4594
39
+ _globals["_EXECUTORSTATUS"]._serialized_end = 4789
40
+ _globals["_EXECUTORFLAVOR"]._serialized_start = 4791
41
+ _globals["_EXECUTORFLAVOR"]._serialized_end = 4891
42
+ _globals["_TASKOUTCOME"]._serialized_start = 4893
43
+ _globals["_TASKOUTCOME"]._serialized_end = 4984
44
+ _globals["_OUTPUTENCODING"]._serialized_start = 4986
45
+ _globals["_OUTPUTENCODING"]._serialized_end = 5113
42
46
  _globals["_GPURESOURCES"]._serialized_start = 54
43
47
  _globals["_GPURESOURCES"]._serialized_end = 155
44
48
  _globals["_HOSTRESOURCES"]._serialized_start = 158
@@ -46,25 +50,31 @@ if not _descriptor._USE_C_DESCRIPTORS:
46
50
  _globals["_ALLOWEDFUNCTION"]._serialized_start = 355
47
51
  _globals["_ALLOWEDFUNCTION"]._serialized_end = 542
48
52
  _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 545
49
- _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 910
50
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 913
51
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1097
52
- _globals["_EXECUTORSTATE"]._serialized_start = 1100
53
- _globals["_EXECUTORSTATE"]._serialized_end = 1771
54
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 1608
55
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 1653
56
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 1773
57
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 1881
58
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 1883
59
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 1912
60
- _globals["_TASK"]._serialized_start = 1915
61
- _globals["_TASK"]._serialized_end = 2307
62
- _globals["_TASKALLOCATION"]._serialized_start = 2309
63
- _globals["_TASKALLOCATION"]._serialized_end = 2436
64
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 2438
65
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 2513
66
- _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 2516
67
- _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 2701
68
- _globals["_EXECUTORAPI"]._serialized_start = 3819
69
- _globals["_EXECUTORAPI"]._serialized_end = 4074
53
+ _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 978
54
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 981
55
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1213
56
+ _globals["_EXECUTORSTATE"]._serialized_start = 1216
57
+ _globals["_EXECUTORSTATE"]._serialized_end = 1887
58
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 1724
59
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 1769
60
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 1889
61
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 1997
62
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 1999
63
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 2028
64
+ _globals["_TASK"]._serialized_start = 2031
65
+ _globals["_TASK"]._serialized_end = 2423
66
+ _globals["_TASKALLOCATION"]._serialized_start = 2425
67
+ _globals["_TASKALLOCATION"]._serialized_end = 2552
68
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 2554
69
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 2629
70
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 2632
71
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 2817
72
+ _globals["_DATAPAYLOAD"]._serialized_start = 2819
73
+ _globals["_DATAPAYLOAD"]._serialized_end = 2930
74
+ _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_start = 2933
75
+ _globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_end = 3708
76
+ _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_start = 3710
77
+ _globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_end = 3737
78
+ _globals["_EXECUTORAPI"]._serialized_start = 5116
79
+ _globals["_EXECUTORAPI"]._serialized_end = 5483
70
80
  # @@protoc_insertion_point(module_scope)
@@ -40,6 +40,7 @@ class FunctionExecutorStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
40
40
  FUNCTION_EXECUTOR_STATUS_UNHEALTHY: _ClassVar[FunctionExecutorStatus]
41
41
  FUNCTION_EXECUTOR_STATUS_STOPPING: _ClassVar[FunctionExecutorStatus]
42
42
  FUNCTION_EXECUTOR_STATUS_STOPPED: _ClassVar[FunctionExecutorStatus]
43
+ FUNCTION_EXECUTOR_STATUS_SHUTDOWN: _ClassVar[FunctionExecutorStatus]
43
44
 
44
45
  class ExecutorStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
45
46
  __slots__ = ()
@@ -56,6 +57,19 @@ class ExecutorFlavor(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
56
57
  EXECUTOR_FLAVOR_OSS: _ClassVar[ExecutorFlavor]
57
58
  EXECUTOR_FLAVOR_PLATFORM: _ClassVar[ExecutorFlavor]
58
59
 
60
+ class TaskOutcome(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
61
+ __slots__ = ()
62
+ TASK_OUTCOME_UNKNOWN: _ClassVar[TaskOutcome]
63
+ TASK_OUTCOME_SUCCESS: _ClassVar[TaskOutcome]
64
+ TASK_OUTCOME_FAILURE: _ClassVar[TaskOutcome]
65
+
66
+ class OutputEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
67
+ __slots__ = ()
68
+ OUTPUT_ENCODING_UNKNOWN: _ClassVar[OutputEncoding]
69
+ OUTPUT_ENCODING_JSON: _ClassVar[OutputEncoding]
70
+ OUTPUT_ENCODING_PICKLE: _ClassVar[OutputEncoding]
71
+ OUTPUT_ENCODING_BINARY: _ClassVar[OutputEncoding]
72
+
59
73
  GPU_MODEL_UNKNOWN: GPUModel
60
74
  GPU_MODEL_NVIDIA_TESLA_T4_16GB: GPUModel
61
75
  GPU_MODEL_NVIDIA_TESLA_V100_16GB: GPUModel
@@ -76,6 +90,7 @@ FUNCTION_EXECUTOR_STATUS_RUNNING_TASK: FunctionExecutorStatus
76
90
  FUNCTION_EXECUTOR_STATUS_UNHEALTHY: FunctionExecutorStatus
77
91
  FUNCTION_EXECUTOR_STATUS_STOPPING: FunctionExecutorStatus
78
92
  FUNCTION_EXECUTOR_STATUS_STOPPED: FunctionExecutorStatus
93
+ FUNCTION_EXECUTOR_STATUS_SHUTDOWN: FunctionExecutorStatus
79
94
  EXECUTOR_STATUS_UNKNOWN: ExecutorStatus
80
95
  EXECUTOR_STATUS_STARTING_UP: ExecutorStatus
81
96
  EXECUTOR_STATUS_RUNNING: ExecutorStatus
@@ -85,6 +100,13 @@ EXECUTOR_STATUS_STOPPED: ExecutorStatus
85
100
  EXECUTOR_FLAVOR_UNKNOWN: ExecutorFlavor
86
101
  EXECUTOR_FLAVOR_OSS: ExecutorFlavor
87
102
  EXECUTOR_FLAVOR_PLATFORM: ExecutorFlavor
103
+ TASK_OUTCOME_UNKNOWN: TaskOutcome
104
+ TASK_OUTCOME_SUCCESS: TaskOutcome
105
+ TASK_OUTCOME_FAILURE: TaskOutcome
106
+ OUTPUT_ENCODING_UNKNOWN: OutputEncoding
107
+ OUTPUT_ENCODING_JSON: OutputEncoding
108
+ OUTPUT_ENCODING_PICKLE: OutputEncoding
109
+ OUTPUT_ENCODING_BINARY: OutputEncoding
88
110
 
89
111
  class GPUResources(_message.Message):
90
112
  __slots__ = ("count", "model")
@@ -142,6 +164,7 @@ class FunctionExecutorDescription(_message.Message):
142
164
  "image_uri",
143
165
  "secret_names",
144
166
  "resource_limits",
167
+ "customer_code_timeout_ms",
145
168
  )
146
169
  ID_FIELD_NUMBER: _ClassVar[int]
147
170
  NAMESPACE_FIELD_NUMBER: _ClassVar[int]
@@ -151,6 +174,7 @@ class FunctionExecutorDescription(_message.Message):
151
174
  IMAGE_URI_FIELD_NUMBER: _ClassVar[int]
152
175
  SECRET_NAMES_FIELD_NUMBER: _ClassVar[int]
153
176
  RESOURCE_LIMITS_FIELD_NUMBER: _ClassVar[int]
177
+ CUSTOMER_CODE_TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
154
178
  id: str
155
179
  namespace: str
156
180
  graph_name: str
@@ -159,6 +183,7 @@ class FunctionExecutorDescription(_message.Message):
159
183
  image_uri: str
160
184
  secret_names: _containers.RepeatedScalarFieldContainer[str]
161
185
  resource_limits: HostResources
186
+ customer_code_timeout_ms: int
162
187
  def __init__(
163
188
  self,
164
189
  id: _Optional[str] = ...,
@@ -169,18 +194,22 @@ class FunctionExecutorDescription(_message.Message):
169
194
  image_uri: _Optional[str] = ...,
170
195
  secret_names: _Optional[_Iterable[str]] = ...,
171
196
  resource_limits: _Optional[_Union[HostResources, _Mapping]] = ...,
197
+ customer_code_timeout_ms: _Optional[int] = ...,
172
198
  ) -> None: ...
173
199
 
174
200
  class FunctionExecutorState(_message.Message):
175
- __slots__ = ("description", "status")
201
+ __slots__ = ("description", "status", "status_message")
176
202
  DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
177
203
  STATUS_FIELD_NUMBER: _ClassVar[int]
204
+ STATUS_MESSAGE_FIELD_NUMBER: _ClassVar[int]
178
205
  description: FunctionExecutorDescription
179
206
  status: FunctionExecutorStatus
207
+ status_message: str
180
208
  def __init__(
181
209
  self,
182
210
  description: _Optional[_Union[FunctionExecutorDescription, _Mapping]] = ...,
183
211
  status: _Optional[_Union[FunctionExecutorStatus, str]] = ...,
212
+ status_message: _Optional[str] = ...,
184
213
  ) -> None: ...
185
214
 
186
215
  class ExecutorState(_message.Message):
@@ -292,7 +321,7 @@ class Task(_message.Message):
292
321
  graph_invocation_id: str
293
322
  input_key: str
294
323
  reducer_output_key: str
295
- timeout_ms: str
324
+ timeout_ms: int
296
325
  def __init__(
297
326
  self,
298
327
  id: _Optional[str] = ...,
@@ -303,7 +332,7 @@ class Task(_message.Message):
303
332
  graph_invocation_id: _Optional[str] = ...,
304
333
  input_key: _Optional[str] = ...,
305
334
  reducer_output_key: _Optional[str] = ...,
306
- timeout_ms: _Optional[str] = ...,
335
+ timeout_ms: _Optional[int] = ...,
307
336
  ) -> None: ...
308
337
 
309
338
  class TaskAllocation(_message.Message):
@@ -342,3 +371,89 @@ class DesiredExecutorState(_message.Message):
342
371
  task_allocations: _Optional[_Iterable[_Union[TaskAllocation, _Mapping]]] = ...,
343
372
  clock: _Optional[int] = ...,
344
373
  ) -> None: ...
374
+
375
+ class DataPayload(_message.Message):
376
+ __slots__ = ("path", "size", "sha256_hash")
377
+ PATH_FIELD_NUMBER: _ClassVar[int]
378
+ SIZE_FIELD_NUMBER: _ClassVar[int]
379
+ SHA256_HASH_FIELD_NUMBER: _ClassVar[int]
380
+ path: str
381
+ size: int
382
+ sha256_hash: str
383
+ def __init__(
384
+ self,
385
+ path: _Optional[str] = ...,
386
+ size: _Optional[int] = ...,
387
+ sha256_hash: _Optional[str] = ...,
388
+ ) -> None: ...
389
+
390
+ class ReportTaskOutcomeRequest(_message.Message):
391
+ __slots__ = (
392
+ "task_id",
393
+ "namespace",
394
+ "graph_name",
395
+ "function_name",
396
+ "graph_invocation_id",
397
+ "outcome",
398
+ "invocation_id",
399
+ "executor_id",
400
+ "reducer",
401
+ "next_functions",
402
+ "fn_outputs",
403
+ "stdout",
404
+ "stderr",
405
+ "output_encoding",
406
+ "output_encoding_version",
407
+ )
408
+ TASK_ID_FIELD_NUMBER: _ClassVar[int]
409
+ NAMESPACE_FIELD_NUMBER: _ClassVar[int]
410
+ GRAPH_NAME_FIELD_NUMBER: _ClassVar[int]
411
+ FUNCTION_NAME_FIELD_NUMBER: _ClassVar[int]
412
+ GRAPH_INVOCATION_ID_FIELD_NUMBER: _ClassVar[int]
413
+ OUTCOME_FIELD_NUMBER: _ClassVar[int]
414
+ INVOCATION_ID_FIELD_NUMBER: _ClassVar[int]
415
+ EXECUTOR_ID_FIELD_NUMBER: _ClassVar[int]
416
+ REDUCER_FIELD_NUMBER: _ClassVar[int]
417
+ NEXT_FUNCTIONS_FIELD_NUMBER: _ClassVar[int]
418
+ FN_OUTPUTS_FIELD_NUMBER: _ClassVar[int]
419
+ STDOUT_FIELD_NUMBER: _ClassVar[int]
420
+ STDERR_FIELD_NUMBER: _ClassVar[int]
421
+ OUTPUT_ENCODING_FIELD_NUMBER: _ClassVar[int]
422
+ OUTPUT_ENCODING_VERSION_FIELD_NUMBER: _ClassVar[int]
423
+ task_id: str
424
+ namespace: str
425
+ graph_name: str
426
+ function_name: str
427
+ graph_invocation_id: str
428
+ outcome: TaskOutcome
429
+ invocation_id: str
430
+ executor_id: str
431
+ reducer: bool
432
+ next_functions: _containers.RepeatedScalarFieldContainer[str]
433
+ fn_outputs: _containers.RepeatedCompositeFieldContainer[DataPayload]
434
+ stdout: DataPayload
435
+ stderr: DataPayload
436
+ output_encoding: OutputEncoding
437
+ output_encoding_version: int
438
+ def __init__(
439
+ self,
440
+ task_id: _Optional[str] = ...,
441
+ namespace: _Optional[str] = ...,
442
+ graph_name: _Optional[str] = ...,
443
+ function_name: _Optional[str] = ...,
444
+ graph_invocation_id: _Optional[str] = ...,
445
+ outcome: _Optional[_Union[TaskOutcome, str]] = ...,
446
+ invocation_id: _Optional[str] = ...,
447
+ executor_id: _Optional[str] = ...,
448
+ reducer: bool = ...,
449
+ next_functions: _Optional[_Iterable[str]] = ...,
450
+ fn_outputs: _Optional[_Iterable[_Union[DataPayload, _Mapping]]] = ...,
451
+ stdout: _Optional[_Union[DataPayload, _Mapping]] = ...,
452
+ stderr: _Optional[_Union[DataPayload, _Mapping]] = ...,
453
+ output_encoding: _Optional[_Union[OutputEncoding, str]] = ...,
454
+ output_encoding_version: _Optional[int] = ...,
455
+ ) -> None: ...
456
+
457
+ class ReportTaskOutcomeResponse(_message.Message):
458
+ __slots__ = ()
459
+ def __init__(self) -> None: ...
@@ -56,6 +56,12 @@ class ExecutorAPIStub(object):
56
56
  response_deserializer=indexify_dot_proto_dot_executor__api__pb2.DesiredExecutorState.FromString,
57
57
  _registered_method=True,
58
58
  )
59
+ self.report_task_outcome = channel.unary_unary(
60
+ "/executor_api_pb.ExecutorAPI/report_task_outcome",
61
+ request_serializer=indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeRequest.SerializeToString,
62
+ response_deserializer=indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeResponse.FromString,
63
+ _registered_method=True,
64
+ )
59
65
 
60
66
 
61
67
  class ExecutorAPIServicer(object):
@@ -86,6 +92,12 @@ class ExecutorAPIServicer(object):
86
92
  context.set_details("Method not implemented!")
87
93
  raise NotImplementedError("Method not implemented!")
88
94
 
95
+ def report_task_outcome(self, request, context):
96
+ """Report the outcome of a task."""
97
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
98
+ context.set_details("Method not implemented!")
99
+ raise NotImplementedError("Method not implemented!")
100
+
89
101
 
90
102
  def add_ExecutorAPIServicer_to_server(servicer, server):
91
103
  rpc_method_handlers = {
@@ -99,6 +111,11 @@ def add_ExecutorAPIServicer_to_server(servicer, server):
99
111
  request_deserializer=indexify_dot_proto_dot_executor__api__pb2.GetDesiredExecutorStatesRequest.FromString,
100
112
  response_serializer=indexify_dot_proto_dot_executor__api__pb2.DesiredExecutorState.SerializeToString,
101
113
  ),
114
+ "report_task_outcome": grpc.unary_unary_rpc_method_handler(
115
+ servicer.report_task_outcome,
116
+ request_deserializer=indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeRequest.FromString,
117
+ response_serializer=indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeResponse.SerializeToString,
118
+ ),
102
119
  }
103
120
  generic_handler = grpc.method_handlers_generic_handler(
104
121
  "executor_api_pb.ExecutorAPI", rpc_method_handlers
@@ -178,3 +195,33 @@ class ExecutorAPI(object):
178
195
  metadata,
179
196
  _registered_method=True,
180
197
  )
198
+
199
+ @staticmethod
200
+ def report_task_outcome(
201
+ request,
202
+ target,
203
+ options=(),
204
+ channel_credentials=None,
205
+ call_credentials=None,
206
+ insecure=False,
207
+ compression=None,
208
+ wait_for_ready=None,
209
+ timeout=None,
210
+ metadata=None,
211
+ ):
212
+ return grpc.experimental.unary_unary(
213
+ request,
214
+ target,
215
+ "/executor_api_pb.ExecutorAPI/report_task_outcome",
216
+ indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeRequest.SerializeToString,
217
+ indexify_dot_proto_dot_executor__api__pb2.ReportTaskOutcomeResponse.FromString,
218
+ options,
219
+ channel_credentials,
220
+ insecure,
221
+ call_credentials,
222
+ compression,
223
+ wait_for_ready,
224
+ timeout,
225
+ metadata,
226
+ _registered_method=True,
227
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: indexify
3
- Version: 0.3.18
3
+ Version: 0.3.19
4
4
  Summary: Open Source Indexify components and helper tools
5
5
  Home-page: https://github.com/tensorlakeai/indexify
6
6
  License: Apache 2.0
@@ -1,13 +1,13 @@
1
- indexify/cli/cli.py,sha256=YGIpXDtWnA3uj9VYhH8PeFGiRBbGBWLb8SyyzIVRKFg,9255
1
+ indexify/cli/cli.py,sha256=TgXC_ZZPT-MJA7CWH297Y4_5M5SDt2QslPUoMotp3Cc,8708
2
2
  indexify/executor/README.md,sha256=ozC6_hMkhQQNVCMEpBxwiUALz6lwErPQxNxQfQDqnG4,2029
3
- indexify/executor/api_objects.py,sha256=oUlH-GQPuPmwgcBzMpI2HehXeElBTCULECk-oHiBHwU,1263
4
- indexify/executor/downloader.py,sha256=LkvAXfKxddnDzgfmwHcpDB_n795-eVKzn-hLjq4nUEM,9412
5
- indexify/executor/executor.py,sha256=0wsWDchr4ocLBk2JVVFEA9be-8Qz09kbxPLDUnrJuV0,15198
3
+ indexify/executor/api_objects.py,sha256=qKQMEjr18xIq7yjpnsLPnWXP4KsVQ9O76EsbYoaL_qQ,1507
4
+ indexify/executor/downloader.py,sha256=59FD2LNUQvl6Ul6m59uTsgE0FWU5t6C2XflaaDcc2FA,9459
5
+ indexify/executor/executor.py,sha256=jdsp9vP2q8y6rIAIRmwfTXBGW3D5cgaFjfy_tHetJ3k,16035
6
6
  indexify/executor/executor_flavor.py,sha256=uilzDQVVYlQGR1MVnrUC4NevUActDWHdnJkr38M6kTk,118
7
- indexify/executor/function_executor/function_executor.py,sha256=s1mc7g6b8ilc98Fp7RFElEBSLJl0UGNQY0iZzCpuR2A,11334
8
- indexify/executor/function_executor/function_executor_state.py,sha256=b2taGClg0BUnlD_rYGkpom6syXBMUp7UWWrjLrUCwyo,3966
9
- indexify/executor/function_executor/function_executor_states_container.py,sha256=RclJDJqIr8ywKipPBC6_idnPAqYi0dPa1d4QUAaXqbw,3460
10
- indexify/executor/function_executor/function_executor_status.py,sha256=U4p1fcdVWlHr7uPY7e7ZSb2_WelUmPeH-WgboQQ9mw4,3336
7
+ indexify/executor/function_executor/function_executor.py,sha256=rmqJrz4yihIefVhfbIIu3K6HFjKU3eEvEy2xFICYPp4,11881
8
+ indexify/executor/function_executor/function_executor_state.py,sha256=ljPm1IrRMJ8hFklwvFp7Xax2HMpUIOHm0DwOxxMcy7U,4336
9
+ indexify/executor/function_executor/function_executor_states_container.py,sha256=wKehM_GXv3i0WkKNS72JVxXq6s60iqiOCX_Gm0qa9pw,3546
10
+ indexify/executor/function_executor/function_executor_status.py,sha256=FUu5PcFC-kkVSCYGwzcEmvpPytoM--XUZ9ylVjv79S4,3416
11
11
  indexify/executor/function_executor/health_checker.py,sha256=Fvd1gmrcjyJqP-8vcsUxfnTHQIMNlHeMWCS70PAVr9E,6095
12
12
  indexify/executor/function_executor/invocation_state_client.py,sha256=p-xgM4__cHR1ApvMV9hShrGWee_Je0VDhICZUGjpQY4,9644
13
13
  indexify/executor/function_executor/metrics/function_executor.py,sha256=TDksxLRJr-P9ZKhF2Orsaxzzb4lVIBxFEjd_9Zv53Ng,6313
@@ -20,19 +20,22 @@ indexify/executor/function_executor/server/client_configuration.py,sha256=gOywMu
20
20
  indexify/executor/function_executor/server/function_executor_server.py,sha256=_DLivLDikupZusRk8gVWDk7fWPT9XjZ4un1yWSlOObs,883
21
21
  indexify/executor/function_executor/server/function_executor_server_factory.py,sha256=cP93a3t1AfGx8qwageNLVdTwG52UOwzYNbbyrPq2TUQ,1692
22
22
  indexify/executor/function_executor/server/subprocess_function_executor_server.py,sha256=JekDOqF7oFD4J6zcN3xB0Dxd1cgpEXMOsb_rKZOeBlI,668
23
- indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py,sha256=xbH0-73tBM-i0dh1x_k0fDrNAi8WgDKjqiQ9xveU4Zg,4214
24
- indexify/executor/function_executor/single_task_runner.py,sha256=iWnJsB2BGqdgAkrlJHbOvSIhVXc88X0AYbB2_o-bB-E,13547
23
+ indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py,sha256=g1AUbhOoPsdhp_50Ayahdyv1Ix5-nEBE8orOQfkATpM,4470
24
+ indexify/executor/function_executor/single_task_runner.py,sha256=OY3a2znwtuv0_Pqn9r5ScGhekNn1OquznKmaGnQL71k,13979
25
25
  indexify/executor/function_executor/task_input.py,sha256=wSrHR4m0juiGClQyeVdhRC37QzDt6Rrjq-ZXJkfBi9k,584
26
- indexify/executor/function_executor/task_output.py,sha256=SQJSlrknB7Ylf5IOeINfBEgiplS5hAPJh1hYulhyvfU,1962
26
+ indexify/executor/function_executor/task_output.py,sha256=kBRy7eSYzxZ3FYQ9PhA56VtBmhJ7ywePICMx_Vx5ipo,3011
27
27
  indexify/executor/grpc/channel_manager.py,sha256=THamn5VghCxRkXDlu2WEXtC6-SNKGc0xoa718bw9A4k,6257
28
+ indexify/executor/grpc/completed_tasks_container.py,sha256=0JhWBUyEQXurVWZ1UtxoPDLXceIrcnnTBlSmfG3v0Cs,898
29
+ indexify/executor/grpc/function_executor_controller.py,sha256=pfxMgyxLR2FFbLjyY5Yib8RSaI_6YeQOdf_VscXLqN0,18645
28
30
  indexify/executor/grpc/metrics/channel_manager.py,sha256=k-WArgklmP5WhjcmFmrgRblB7yc3XlaOXO8owRyV-mw,649
29
31
  indexify/executor/grpc/metrics/state_reporter.py,sha256=GggBEjMzQUYIG95LtTS4fUg1u9jYowkaXoUXppAXucs,543
30
- indexify/executor/grpc/state_reconciler.py,sha256=RvlY2k6QwxryjOYxhf1AMb1T8BRadEYzsU03mS0nQFY,13300
31
- indexify/executor/grpc/state_reporter.py,sha256=tpbg4A3nMyvwEsrYd-whET821a2ZuS8OLyu89Y3DvBw,9876
32
+ indexify/executor/grpc/state_reconciler.py,sha256=XRaZxHy2bX-zIzbJCBg3io_ZlslnGeG61dOk0fhYdJw,12866
33
+ indexify/executor/grpc/state_reporter.py,sha256=7Z3pFqtXucxqAGX3o004uVG6tYWflsnKx1H2ldfnGT8,10043
34
+ indexify/executor/grpc/task_controller.py,sha256=fsUiABPuZhGAjdpSKm0AVNIyoRxlJVFd4XDo3GzXEIQ,18483
32
35
  indexify/executor/metrics/downloader.py,sha256=lctPh8xjkXeLEFJnl1hNrD1yEhLhIl5sggsR4Yoe_Zc,2746
33
36
  indexify/executor/metrics/executor.py,sha256=ua-Vv_k1CB4juJdF7tEBQbBMksqWAA3iXKKMKXZUCLk,2369
34
37
  indexify/executor/metrics/task_fetcher.py,sha256=iJEwCLzYr2cuz7hRvNiqaa2nvQP4OrA0hm0iJY0YKG0,736
35
- indexify/executor/metrics/task_reporter.py,sha256=zUA9RpkSgx5lG_ZqDDuela5VuhtsnC0IKoQcEvHND0Y,730
38
+ indexify/executor/metrics/task_reporter.py,sha256=44VT_c7njXlTtPl4xjlsYrIHpaiVAnvhhQdj56RPU6o,1215
36
39
  indexify/executor/metrics/task_runner.py,sha256=ZGFrl7zzfUdgPZnklxRIbnv9wVcHIQRhOGNqn9V2hSk,2047
37
40
  indexify/executor/monitoring/function_allowlist.py,sha256=wUGeiv3aAGWMlQXzHXq9O6MVHby6Tu-zY4U0MyWiQu0,683
38
41
  indexify/executor/monitoring/handler.py,sha256=Cj1cu_LcsAP0tdviqNhoEtGm4h0OJAxxzW9C2YdNXYU,240
@@ -45,13 +48,13 @@ indexify/executor/monitoring/server.py,sha256=yzdYhcxnmY6uTQUMt3vatF5jilN52ZtfFs
45
48
  indexify/executor/monitoring/startup_probe_handler.py,sha256=zXXsBU15SMlBx1bSFpxWDfed1VHtKKnwvLQ8-frpG98,425
46
49
  indexify/executor/runtime_probes.py,sha256=bo6Dq6AGZpJH099j0DHtVSDEH80tv3j9MXf3VXSx_p8,2182
47
50
  indexify/executor/task_fetcher.py,sha256=p3iEsWyGi0ZMPAv0183smzOUD1KycQ_dXsyd9mpB9IU,3529
48
- indexify/executor/task_reporter.py,sha256=0D6ToLhDvd9U0ZPRaDMsZJYBsdzZUqcdkpIxHDUrvdk,7892
49
- indexify/executor/task_runner.py,sha256=1zYH03yS_FaFk9xXBl-ioM74-L2xdW3vHJt522mseds,7073
50
- indexify/proto/executor_api.proto,sha256=-dSnBE35OUoknDDV0HvSOVk11-pPqIjbQ5X22uJ_rSs,6399
51
- indexify/proto/executor_api_pb2.py,sha256=WffUqYV39xoDmdaHYpckR3XX-pdbOzMoaYO5ghcA1Lg,9949
52
- indexify/proto/executor_api_pb2.pyi,sha256=lXP79CootL4pHghuVIv1wgR0Y0YPl0wIVUiHKY7PM2s,12677
53
- indexify/proto/executor_api_pb2_grpc.py,sha256=i8LEPG6esub6C-xxJ7S3vEJSgWCOxSqElNjMW3Imqg8,7607
54
- indexify-0.3.18.dist-info/METADATA,sha256=T7_EDOfiMyAn0dpZ-m96vgiDVT2oGJDn0N7UYzDYNSA,1158
55
- indexify-0.3.18.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
56
- indexify-0.3.18.dist-info/entry_points.txt,sha256=GU9wmsgvN7nQw3N2X0PMYn1RSvF6CrhH9RuC2D8d3Gk,53
57
- indexify-0.3.18.dist-info/RECORD,,
51
+ indexify/executor/task_reporter.py,sha256=59Bgsjflxzo936KMOj70lGpDhwbUlQDuqqfHEy16kcw,11274
52
+ indexify/executor/task_runner.py,sha256=2-f6Uupu_aVPg34G27yuiPTC6eE4XnT-qizpzPryzDI,7134
53
+ indexify/proto/executor_api.proto,sha256=16jEP4VxSaEPWVBx3h2_rel3ltYdgW4SBLvRl-iUe78,8319
54
+ indexify/proto/executor_api_pb2.py,sha256=dW4zAMZ-YU8aeU77-5ciQ0bTNWDt7v4m6CGQ2VdQZZI,12874
55
+ indexify/proto/executor_api_pb2.pyi,sha256=6WHUUjsn5y7jJot_y_h3NXy2L04E8Xo-zpO9_tZJcAA,16851
56
+ indexify/proto/executor_api_pb2_grpc.py,sha256=GGiDtyQlA2382E_ZyKUBYcWNEJHH_RlulieStKfkJXI,9514
57
+ indexify-0.3.19.dist-info/METADATA,sha256=gii0ukZNSxaQ4jF1J1NtsQOSbisC4lCbIV7hjXSFiqk,1158
58
+ indexify-0.3.19.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
59
+ indexify-0.3.19.dist-info/entry_points.txt,sha256=GU9wmsgvN7nQw3N2X0PMYn1RSvF6CrhH9RuC2D8d3Gk,53
60
+ indexify-0.3.19.dist-info/RECORD,,