indexify 0.3.19__py3-none-any.whl → 0.3.20__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.
- indexify/cli/cli.py +12 -0
- indexify/executor/blob_store/blob_store.py +69 -0
- indexify/executor/blob_store/local_fs_blob_store.py +48 -0
- indexify/executor/blob_store/metrics/blob_store.py +33 -0
- indexify/executor/blob_store/s3_blob_store.py +85 -0
- indexify/executor/downloader.py +145 -24
- indexify/executor/executor.py +26 -12
- indexify/executor/function_executor/function_executor.py +1 -1
- indexify/executor/function_executor/function_executor_states_container.py +5 -0
- indexify/executor/function_executor/function_executor_status.py +2 -0
- indexify/executor/function_executor/health_checker.py +7 -2
- indexify/executor/function_executor/invocation_state_client.py +4 -2
- indexify/executor/function_executor/task_output.py +2 -1
- indexify/executor/grpc/channel_manager.py +4 -3
- indexify/executor/grpc/function_executor_controller.py +163 -193
- indexify/executor/grpc/metrics/state_reconciler.py +17 -0
- indexify/executor/grpc/metrics/task_controller.py +8 -0
- indexify/executor/grpc/state_reconciler.py +305 -188
- indexify/executor/grpc/state_reporter.py +18 -10
- indexify/executor/grpc/task_controller.py +232 -189
- indexify/executor/task_reporter.py +23 -5
- indexify/proto/executor_api.proto +37 -11
- indexify/proto/executor_api_pb2.py +49 -47
- indexify/proto/executor_api_pb2.pyi +55 -15
- {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/METADATA +2 -1
- {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/RECORD +28 -23
- indexify/executor/grpc/completed_tasks_container.py +0 -26
- {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/WHEEL +0 -0
- {indexify-0.3.19.dist-info → indexify-0.3.20.dist-info}/entry_points.txt +0 -0
@@ -9,6 +9,7 @@ from tensorlake.utils.http_client import get_httpx_client
|
|
9
9
|
|
10
10
|
from indexify.proto.executor_api_pb2 import (
|
11
11
|
DataPayload,
|
12
|
+
DataPayloadEncoding,
|
12
13
|
OutputEncoding,
|
13
14
|
ReportTaskOutcomeRequest,
|
14
15
|
TaskOutcome,
|
@@ -75,7 +76,7 @@ class TaskReporter:
|
|
75
76
|
self._client = get_httpx_client(config_path, make_async=False)
|
76
77
|
self._channel_manager = channel_manager
|
77
78
|
|
78
|
-
async def shutdown(self):
|
79
|
+
async def shutdown(self) -> None:
|
79
80
|
"""Shuts down the task reporter.
|
80
81
|
|
81
82
|
Task reporter stops reporting all task outcomes to the Server.
|
@@ -84,7 +85,7 @@ class TaskReporter:
|
|
84
85
|
"""
|
85
86
|
self._is_shutdown = True
|
86
87
|
|
87
|
-
async def report(self, output: TaskOutput, logger: Any):
|
88
|
+
async def report(self, output: TaskOutput, logger: Any) -> None:
|
88
89
|
"""Reports result of the supplied task."""
|
89
90
|
logger = logger.bind(module=__name__)
|
90
91
|
|
@@ -121,6 +122,7 @@ class TaskReporter:
|
|
121
122
|
"files": output_files if len(output_files) > 0 else FORCE_MULTIPART,
|
122
123
|
}
|
123
124
|
|
125
|
+
# TODO: Instead of uploading the files to server, upload them to S3.
|
124
126
|
start_time = time.time()
|
125
127
|
with metric_server_ingest_files_latency.time():
|
126
128
|
metric_server_ingest_files_requests.inc()
|
@@ -159,23 +161,32 @@ class TaskReporter:
|
|
159
161
|
for data_payload in ingested_files.data_payloads:
|
160
162
|
fn_outputs.append(
|
161
163
|
DataPayload(
|
162
|
-
path=data_payload.path,
|
164
|
+
path=data_payload.path, # TODO: stop using this deprecated field once Server side migration is done.
|
165
|
+
uri=data_payload.path,
|
163
166
|
size=data_payload.size,
|
164
167
|
sha256_hash=data_payload.sha256_hash,
|
168
|
+
encoding=_to_grpc_data_payload_encoding(output),
|
169
|
+
encoding_version=0,
|
165
170
|
)
|
166
171
|
)
|
167
172
|
stdout, stderr = None, None
|
168
173
|
if ingested_files.stdout:
|
169
174
|
stdout = DataPayload(
|
170
|
-
path=ingested_files.stdout.path,
|
175
|
+
path=ingested_files.stdout.path, # TODO: stop using this deprecated field once Server side migration is done.
|
176
|
+
uri=ingested_files.stdout.path,
|
171
177
|
size=ingested_files.stdout.size,
|
172
178
|
sha256_hash=ingested_files.stdout.sha256_hash,
|
179
|
+
encoding=DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_TEXT,
|
180
|
+
encoding_version=0,
|
173
181
|
)
|
174
182
|
if ingested_files.stderr:
|
175
183
|
stderr = DataPayload(
|
176
|
-
path=ingested_files.stderr.path,
|
184
|
+
path=ingested_files.stderr.path, # TODO: stop using this deprecated field once Server side migration is done.
|
185
|
+
uri=ingested_files.stderr.path,
|
177
186
|
size=ingested_files.stderr.size,
|
178
187
|
sha256_hash=ingested_files.stderr.sha256_hash,
|
188
|
+
encoding=DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_TEXT,
|
189
|
+
encoding_version=0,
|
179
190
|
)
|
180
191
|
|
181
192
|
request = ReportTaskOutcomeRequest(
|
@@ -337,3 +348,10 @@ def _to_grpc_output_encoding(task_output: TaskOutput) -> OutputEncoding:
|
|
337
348
|
return OutputEncoding.OUTPUT_ENCODING_JSON
|
338
349
|
else:
|
339
350
|
return OutputEncoding.OUTPUT_ENCODING_PICKLE
|
351
|
+
|
352
|
+
|
353
|
+
def _to_grpc_data_payload_encoding(task_output: TaskOutput) -> DataPayloadEncoding:
|
354
|
+
if task_output.output_encoding == "json":
|
355
|
+
return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_JSON
|
356
|
+
else:
|
357
|
+
return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_BINARY_PICKLE
|
@@ -4,6 +4,28 @@ 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
|
+
// ===== DataPayload =====
|
8
|
+
enum DataPayloadEncoding {
|
9
|
+
DATA_PAYLOAD_ENCODING_UNKNOWN = 0;
|
10
|
+
// These encodings are currently mapping 1:1 to mime types.
|
11
|
+
// TODO: use SDK specific encodings becase 1:1 mapping might not work in the future.
|
12
|
+
DATA_PAYLOAD_ENCODING_UTF8_JSON = 1;
|
13
|
+
DATA_PAYLOAD_ENCODING_UTF8_TEXT = 2;
|
14
|
+
DATA_PAYLOAD_ENCODING_BINARY_PICKLE = 3;
|
15
|
+
}
|
16
|
+
|
17
|
+
message DataPayload {
|
18
|
+
optional string path = 1; // deprecated, TODO: remove when URI us used everywhere
|
19
|
+
optional uint64 size = 2;
|
20
|
+
optional string sha256_hash = 3;
|
21
|
+
// URI of the data.
|
22
|
+
// S3 URI if the data is stored in S3.
|
23
|
+
// Starts with "file://"" prefix if the data is stored on a local file system.
|
24
|
+
optional string uri = 4;
|
25
|
+
optional DataPayloadEncoding encoding = 5;
|
26
|
+
optional uint64 encoding_version = 6;
|
27
|
+
}
|
28
|
+
|
7
29
|
// ===== report_executor_state RPC =====
|
8
30
|
|
9
31
|
enum GPUModel {
|
@@ -72,6 +94,7 @@ message FunctionExecutorDescription {
|
|
72
94
|
optional HostResources resource_limits = 8;
|
73
95
|
// Timeout for customer code duration during FE creation.
|
74
96
|
optional uint32 customer_code_timeout_ms = 9;
|
97
|
+
optional DataPayload graph = 10;
|
75
98
|
}
|
76
99
|
|
77
100
|
message FunctionExecutorState {
|
@@ -112,6 +135,9 @@ message ExecutorState {
|
|
112
135
|
repeated FunctionExecutorState function_executor_states = 9;
|
113
136
|
map<string, string> labels = 10;
|
114
137
|
optional string state_hash = 11;
|
138
|
+
// Server supplied clock value of the latest desired executor state that was
|
139
|
+
// reconciled by Executor. Not included into state_hash.
|
140
|
+
optional uint64 server_clock = 12;
|
115
141
|
}
|
116
142
|
|
117
143
|
// A message sent by Executor to report its up to date state to Server.
|
@@ -131,9 +157,15 @@ message Task {
|
|
131
157
|
optional string graph_version = 4;
|
132
158
|
optional string function_name = 5;
|
133
159
|
optional string graph_invocation_id = 6;
|
134
|
-
optional string input_key = 8;
|
135
|
-
optional string reducer_output_key = 9;
|
160
|
+
optional string input_key = 8; // deprecated. TODO: remove when input is used everywhere
|
161
|
+
optional string reducer_output_key = 9; // deprecated. TODO: remove when reducer_input is used everywhere
|
136
162
|
optional uint32 timeout_ms = 10;
|
163
|
+
optional DataPayload input = 11;
|
164
|
+
optional DataPayload reducer_input = 12;
|
165
|
+
// URI prefix for the output payloads.
|
166
|
+
// S3 URI if the data is stored in S3.
|
167
|
+
// Starts with "file://"" prefix followed by an absolute directory path if the data is stored on a local file system.
|
168
|
+
optional string output_payload_uri_prefix = 13;
|
137
169
|
}
|
138
170
|
|
139
171
|
message TaskAllocation {
|
@@ -163,12 +195,6 @@ enum TaskOutcome {
|
|
163
195
|
TASK_OUTCOME_FAILURE = 2;
|
164
196
|
}
|
165
197
|
|
166
|
-
message DataPayload {
|
167
|
-
optional string path = 1;
|
168
|
-
optional uint64 size = 2;
|
169
|
-
optional string sha256_hash = 3;
|
170
|
-
}
|
171
|
-
|
172
198
|
enum OutputEncoding {
|
173
199
|
OUTPUT_ENCODING_UNKNOWN = 0;
|
174
200
|
OUTPUT_ENCODING_JSON = 1;
|
@@ -183,7 +209,7 @@ message ReportTaskOutcomeRequest {
|
|
183
209
|
optional string function_name = 4;
|
184
210
|
optional string graph_invocation_id = 6;
|
185
211
|
optional TaskOutcome outcome = 7;
|
186
|
-
optional string invocation_id = 8;
|
212
|
+
optional string invocation_id = 8; // deprecated. TODO: remove when graph_invocation_id is used everywhere
|
187
213
|
optional string executor_id = 9;
|
188
214
|
optional bool reducer = 10;
|
189
215
|
|
@@ -196,10 +222,10 @@ message ReportTaskOutcomeRequest {
|
|
196
222
|
optional DataPayload stdout = 14;
|
197
223
|
optional DataPayload stderr = 15;
|
198
224
|
// Output encoding of all the outputs of a function have to be same.
|
199
|
-
optional OutputEncoding output_encoding = 13;
|
225
|
+
optional OutputEncoding output_encoding = 13; // deprecated. TODO: remove when DataPayload.encoding is used everywhere
|
200
226
|
// This allows us to change how we encode the output from functions
|
201
227
|
// and serialize them into storage.
|
202
|
-
optional uint64 output_encoding_version = 5;
|
228
|
+
optional uint64 output_encoding_version = 5; // deprecated. TODO: remove when DataPayload.encoding_version is used everywhere
|
203
229
|
}
|
204
230
|
|
205
231
|
message ReportTaskOutcomeResponse {
|
@@ -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"\
|
22
|
+
b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"\x87\x02\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\x12\x10\n\x03uri\x18\x04 \x01(\tH\x03\x88\x01\x01\x12;\n\x08\x65ncoding\x18\x05 \x01(\x0e\x32$.executor_api_pb.DataPayloadEncodingH\x04\x88\x01\x01\x12\x1d\n\x10\x65ncoding_version\x18\x06 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_pathB\x07\n\x05_sizeB\x0e\n\x0c_sha256_hashB\x06\n\x04_uriB\x0b\n\t_encodingB\x13\n\x11_encoding_version"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\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\x12\x30\n\x05graph\x18\n \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\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\x0c\n\n_image_uriB\x12\n\x10_resource_limitsB\x1b\n\x19_customer_code_timeout_msB\x08\n\x06_graph"\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"\xcb\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\x12\x19\n\x0cserver_clock\x18\x0c \x01(\x04H\x08\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_hashB\x0f\n\r_server_clock"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"\xd6\x04\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\x12\x30\n\x05input\x18\x0b \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x38\n\rreducer_input\x18\x0c \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\r \x01(\tH\x0b\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_msB\x08\n\x06_inputB\x10\n\x0e_reducer_inputB\x1c\n\x1a_output_payload_uri_prefix"\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"\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*\xab\x01\n\x13\x44\x61taPayloadEncoding\x12!\n\x1d\x44\x41TA_PAYLOAD_ENCODING_UNKNOWN\x10\x00\x12#\n\x1f\x44\x41TA_PAYLOAD_ENCODING_UTF8_JSON\x10\x01\x12#\n\x1f\x44\x41TA_PAYLOAD_ENCODING_UTF8_TEXT\x10\x02\x12\'\n#DATA_PAYLOAD_ENCODING_BINARY_PICKLE\x10\x03*\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,50 +31,52 @@ 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["
|
35
|
-
_globals["
|
36
|
-
_globals["
|
37
|
-
_globals["
|
38
|
-
_globals["
|
39
|
-
_globals["
|
40
|
-
_globals["
|
41
|
-
_globals["
|
42
|
-
_globals["
|
43
|
-
_globals["
|
44
|
-
_globals["
|
45
|
-
_globals["
|
46
|
-
_globals["
|
47
|
-
_globals["
|
48
|
-
_globals["
|
49
|
-
_globals["
|
50
|
-
_globals["
|
51
|
-
_globals["
|
52
|
-
_globals["
|
53
|
-
_globals["
|
54
|
-
_globals["
|
55
|
-
_globals["
|
56
|
-
_globals["
|
57
|
-
_globals["
|
58
|
-
_globals["
|
59
|
-
_globals["
|
60
|
-
_globals["
|
61
|
-
_globals["
|
62
|
-
_globals["
|
63
|
-
_globals["
|
64
|
-
_globals["
|
65
|
-
_globals["
|
66
|
-
_globals["
|
67
|
-
_globals["
|
68
|
-
_globals["
|
69
|
-
_globals["
|
70
|
-
_globals["
|
71
|
-
_globals["
|
72
|
-
_globals["
|
73
|
-
_globals["
|
74
|
-
_globals["
|
75
|
-
_globals["
|
76
|
-
_globals["
|
77
|
-
_globals["
|
78
|
-
_globals["
|
79
|
-
_globals["
|
34
|
+
_globals["_DATAPAYLOADENCODING"]._serialized_start = 4203
|
35
|
+
_globals["_DATAPAYLOADENCODING"]._serialized_end = 4374
|
36
|
+
_globals["_GPUMODEL"]._serialized_start = 4377
|
37
|
+
_globals["_GPUMODEL"]._serialized_end = 4767
|
38
|
+
_globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 4770
|
39
|
+
_globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 5228
|
40
|
+
_globals["_EXECUTORSTATUS"]._serialized_start = 5231
|
41
|
+
_globals["_EXECUTORSTATUS"]._serialized_end = 5426
|
42
|
+
_globals["_EXECUTORFLAVOR"]._serialized_start = 5428
|
43
|
+
_globals["_EXECUTORFLAVOR"]._serialized_end = 5528
|
44
|
+
_globals["_TASKOUTCOME"]._serialized_start = 5530
|
45
|
+
_globals["_TASKOUTCOME"]._serialized_end = 5621
|
46
|
+
_globals["_OUTPUTENCODING"]._serialized_start = 5623
|
47
|
+
_globals["_OUTPUTENCODING"]._serialized_end = 5750
|
48
|
+
_globals["_DATAPAYLOAD"]._serialized_start = 55
|
49
|
+
_globals["_DATAPAYLOAD"]._serialized_end = 318
|
50
|
+
_globals["_GPURESOURCES"]._serialized_start = 320
|
51
|
+
_globals["_GPURESOURCES"]._serialized_end = 421
|
52
|
+
_globals["_HOSTRESOURCES"]._serialized_start = 424
|
53
|
+
_globals["_HOSTRESOURCES"]._serialized_end = 618
|
54
|
+
_globals["_ALLOWEDFUNCTION"]._serialized_start = 621
|
55
|
+
_globals["_ALLOWEDFUNCTION"]._serialized_end = 808
|
56
|
+
_globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 811
|
57
|
+
_globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 1304
|
58
|
+
_globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 1307
|
59
|
+
_globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1539
|
60
|
+
_globals["_EXECUTORSTATE"]._serialized_start = 1542
|
61
|
+
_globals["_EXECUTORSTATE"]._serialized_end = 2257
|
62
|
+
_globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 2077
|
63
|
+
_globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 2122
|
64
|
+
_globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 2259
|
65
|
+
_globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 2367
|
66
|
+
_globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 2369
|
67
|
+
_globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 2398
|
68
|
+
_globals["_TASK"]._serialized_start = 2401
|
69
|
+
_globals["_TASK"]._serialized_end = 2999
|
70
|
+
_globals["_TASKALLOCATION"]._serialized_start = 3001
|
71
|
+
_globals["_TASKALLOCATION"]._serialized_end = 3128
|
72
|
+
_globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 3130
|
73
|
+
_globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 3205
|
74
|
+
_globals["_DESIREDEXECUTORSTATE"]._serialized_start = 3208
|
75
|
+
_globals["_DESIREDEXECUTORSTATE"]._serialized_end = 3393
|
76
|
+
_globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_start = 3396
|
77
|
+
_globals["_REPORTTASKOUTCOMEREQUEST"]._serialized_end = 4171
|
78
|
+
_globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_start = 4173
|
79
|
+
_globals["_REPORTTASKOUTCOMERESPONSE"]._serialized_end = 4200
|
80
|
+
_globals["_EXECUTORAPI"]._serialized_start = 5753
|
81
|
+
_globals["_EXECUTORAPI"]._serialized_end = 6120
|
80
82
|
# @@protoc_insertion_point(module_scope)
|
@@ -11,6 +11,13 @@ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
11
11
|
|
12
12
|
DESCRIPTOR: _descriptor.FileDescriptor
|
13
13
|
|
14
|
+
class DataPayloadEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
15
|
+
__slots__ = ()
|
16
|
+
DATA_PAYLOAD_ENCODING_UNKNOWN: _ClassVar[DataPayloadEncoding]
|
17
|
+
DATA_PAYLOAD_ENCODING_UTF8_JSON: _ClassVar[DataPayloadEncoding]
|
18
|
+
DATA_PAYLOAD_ENCODING_UTF8_TEXT: _ClassVar[DataPayloadEncoding]
|
19
|
+
DATA_PAYLOAD_ENCODING_BINARY_PICKLE: _ClassVar[DataPayloadEncoding]
|
20
|
+
|
14
21
|
class GPUModel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
15
22
|
__slots__ = ()
|
16
23
|
GPU_MODEL_UNKNOWN: _ClassVar[GPUModel]
|
@@ -70,6 +77,10 @@ class OutputEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
70
77
|
OUTPUT_ENCODING_PICKLE: _ClassVar[OutputEncoding]
|
71
78
|
OUTPUT_ENCODING_BINARY: _ClassVar[OutputEncoding]
|
72
79
|
|
80
|
+
DATA_PAYLOAD_ENCODING_UNKNOWN: DataPayloadEncoding
|
81
|
+
DATA_PAYLOAD_ENCODING_UTF8_JSON: DataPayloadEncoding
|
82
|
+
DATA_PAYLOAD_ENCODING_UTF8_TEXT: DataPayloadEncoding
|
83
|
+
DATA_PAYLOAD_ENCODING_BINARY_PICKLE: DataPayloadEncoding
|
73
84
|
GPU_MODEL_UNKNOWN: GPUModel
|
74
85
|
GPU_MODEL_NVIDIA_TESLA_T4_16GB: GPUModel
|
75
86
|
GPU_MODEL_NVIDIA_TESLA_V100_16GB: GPUModel
|
@@ -108,6 +119,30 @@ OUTPUT_ENCODING_JSON: OutputEncoding
|
|
108
119
|
OUTPUT_ENCODING_PICKLE: OutputEncoding
|
109
120
|
OUTPUT_ENCODING_BINARY: OutputEncoding
|
110
121
|
|
122
|
+
class DataPayload(_message.Message):
|
123
|
+
__slots__ = ("path", "size", "sha256_hash", "uri", "encoding", "encoding_version")
|
124
|
+
PATH_FIELD_NUMBER: _ClassVar[int]
|
125
|
+
SIZE_FIELD_NUMBER: _ClassVar[int]
|
126
|
+
SHA256_HASH_FIELD_NUMBER: _ClassVar[int]
|
127
|
+
URI_FIELD_NUMBER: _ClassVar[int]
|
128
|
+
ENCODING_FIELD_NUMBER: _ClassVar[int]
|
129
|
+
ENCODING_VERSION_FIELD_NUMBER: _ClassVar[int]
|
130
|
+
path: str
|
131
|
+
size: int
|
132
|
+
sha256_hash: str
|
133
|
+
uri: str
|
134
|
+
encoding: DataPayloadEncoding
|
135
|
+
encoding_version: int
|
136
|
+
def __init__(
|
137
|
+
self,
|
138
|
+
path: _Optional[str] = ...,
|
139
|
+
size: _Optional[int] = ...,
|
140
|
+
sha256_hash: _Optional[str] = ...,
|
141
|
+
uri: _Optional[str] = ...,
|
142
|
+
encoding: _Optional[_Union[DataPayloadEncoding, str]] = ...,
|
143
|
+
encoding_version: _Optional[int] = ...,
|
144
|
+
) -> None: ...
|
145
|
+
|
111
146
|
class GPUResources(_message.Message):
|
112
147
|
__slots__ = ("count", "model")
|
113
148
|
COUNT_FIELD_NUMBER: _ClassVar[int]
|
@@ -165,6 +200,7 @@ class FunctionExecutorDescription(_message.Message):
|
|
165
200
|
"secret_names",
|
166
201
|
"resource_limits",
|
167
202
|
"customer_code_timeout_ms",
|
203
|
+
"graph",
|
168
204
|
)
|
169
205
|
ID_FIELD_NUMBER: _ClassVar[int]
|
170
206
|
NAMESPACE_FIELD_NUMBER: _ClassVar[int]
|
@@ -175,6 +211,7 @@ class FunctionExecutorDescription(_message.Message):
|
|
175
211
|
SECRET_NAMES_FIELD_NUMBER: _ClassVar[int]
|
176
212
|
RESOURCE_LIMITS_FIELD_NUMBER: _ClassVar[int]
|
177
213
|
CUSTOMER_CODE_TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
|
214
|
+
GRAPH_FIELD_NUMBER: _ClassVar[int]
|
178
215
|
id: str
|
179
216
|
namespace: str
|
180
217
|
graph_name: str
|
@@ -184,6 +221,7 @@ class FunctionExecutorDescription(_message.Message):
|
|
184
221
|
secret_names: _containers.RepeatedScalarFieldContainer[str]
|
185
222
|
resource_limits: HostResources
|
186
223
|
customer_code_timeout_ms: int
|
224
|
+
graph: DataPayload
|
187
225
|
def __init__(
|
188
226
|
self,
|
189
227
|
id: _Optional[str] = ...,
|
@@ -195,6 +233,7 @@ class FunctionExecutorDescription(_message.Message):
|
|
195
233
|
secret_names: _Optional[_Iterable[str]] = ...,
|
196
234
|
resource_limits: _Optional[_Union[HostResources, _Mapping]] = ...,
|
197
235
|
customer_code_timeout_ms: _Optional[int] = ...,
|
236
|
+
graph: _Optional[_Union[DataPayload, _Mapping]] = ...,
|
198
237
|
) -> None: ...
|
199
238
|
|
200
239
|
class FunctionExecutorState(_message.Message):
|
@@ -225,6 +264,7 @@ class ExecutorState(_message.Message):
|
|
225
264
|
"function_executor_states",
|
226
265
|
"labels",
|
227
266
|
"state_hash",
|
267
|
+
"server_clock",
|
228
268
|
)
|
229
269
|
|
230
270
|
class LabelsEntry(_message.Message):
|
@@ -248,6 +288,7 @@ class ExecutorState(_message.Message):
|
|
248
288
|
FUNCTION_EXECUTOR_STATES_FIELD_NUMBER: _ClassVar[int]
|
249
289
|
LABELS_FIELD_NUMBER: _ClassVar[int]
|
250
290
|
STATE_HASH_FIELD_NUMBER: _ClassVar[int]
|
291
|
+
SERVER_CLOCK_FIELD_NUMBER: _ClassVar[int]
|
251
292
|
executor_id: str
|
252
293
|
development_mode: bool
|
253
294
|
hostname: str
|
@@ -261,6 +302,7 @@ class ExecutorState(_message.Message):
|
|
261
302
|
]
|
262
303
|
labels: _containers.ScalarMap[str, str]
|
263
304
|
state_hash: str
|
305
|
+
server_clock: int
|
264
306
|
def __init__(
|
265
307
|
self,
|
266
308
|
executor_id: _Optional[str] = ...,
|
@@ -278,6 +320,7 @@ class ExecutorState(_message.Message):
|
|
278
320
|
] = ...,
|
279
321
|
labels: _Optional[_Mapping[str, str]] = ...,
|
280
322
|
state_hash: _Optional[str] = ...,
|
323
|
+
server_clock: _Optional[int] = ...,
|
281
324
|
) -> None: ...
|
282
325
|
|
283
326
|
class ReportExecutorStateRequest(_message.Message):
|
@@ -303,6 +346,9 @@ class Task(_message.Message):
|
|
303
346
|
"input_key",
|
304
347
|
"reducer_output_key",
|
305
348
|
"timeout_ms",
|
349
|
+
"input",
|
350
|
+
"reducer_input",
|
351
|
+
"output_payload_uri_prefix",
|
306
352
|
)
|
307
353
|
ID_FIELD_NUMBER: _ClassVar[int]
|
308
354
|
NAMESPACE_FIELD_NUMBER: _ClassVar[int]
|
@@ -313,6 +359,9 @@ class Task(_message.Message):
|
|
313
359
|
INPUT_KEY_FIELD_NUMBER: _ClassVar[int]
|
314
360
|
REDUCER_OUTPUT_KEY_FIELD_NUMBER: _ClassVar[int]
|
315
361
|
TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
|
362
|
+
INPUT_FIELD_NUMBER: _ClassVar[int]
|
363
|
+
REDUCER_INPUT_FIELD_NUMBER: _ClassVar[int]
|
364
|
+
OUTPUT_PAYLOAD_URI_PREFIX_FIELD_NUMBER: _ClassVar[int]
|
316
365
|
id: str
|
317
366
|
namespace: str
|
318
367
|
graph_name: str
|
@@ -322,6 +371,9 @@ class Task(_message.Message):
|
|
322
371
|
input_key: str
|
323
372
|
reducer_output_key: str
|
324
373
|
timeout_ms: int
|
374
|
+
input: DataPayload
|
375
|
+
reducer_input: DataPayload
|
376
|
+
output_payload_uri_prefix: str
|
325
377
|
def __init__(
|
326
378
|
self,
|
327
379
|
id: _Optional[str] = ...,
|
@@ -333,6 +385,9 @@ class Task(_message.Message):
|
|
333
385
|
input_key: _Optional[str] = ...,
|
334
386
|
reducer_output_key: _Optional[str] = ...,
|
335
387
|
timeout_ms: _Optional[int] = ...,
|
388
|
+
input: _Optional[_Union[DataPayload, _Mapping]] = ...,
|
389
|
+
reducer_input: _Optional[_Union[DataPayload, _Mapping]] = ...,
|
390
|
+
output_payload_uri_prefix: _Optional[str] = ...,
|
336
391
|
) -> None: ...
|
337
392
|
|
338
393
|
class TaskAllocation(_message.Message):
|
@@ -372,21 +427,6 @@ class DesiredExecutorState(_message.Message):
|
|
372
427
|
clock: _Optional[int] = ...,
|
373
428
|
) -> None: ...
|
374
429
|
|
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
430
|
class ReportTaskOutcomeRequest(_message.Message):
|
391
431
|
__slots__ = (
|
392
432
|
"task_id",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: indexify
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.20
|
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
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
16
16
|
Classifier: Programming Language :: Python :: 3.13
|
17
17
|
Requires-Dist: aiohttp (>=3.11.0,<4.0.0)
|
18
|
+
Requires-Dist: boto3 (>=1.37.30,<2.0.0)
|
18
19
|
Requires-Dist: prometheus-client (>=0.21.1,<0.22.0)
|
19
20
|
Requires-Dist: rich (>=13.9.2,<14.0.0)
|
20
21
|
Requires-Dist: tensorlake (>=0.1)
|
@@ -1,15 +1,19 @@
|
|
1
|
-
indexify/cli/cli.py,sha256=
|
1
|
+
indexify/cli/cli.py,sha256=L-QVyRO-nGazfrdIbhxYvxMwhEnNjJ4H32Lw9pz464I,9345
|
2
2
|
indexify/executor/README.md,sha256=ozC6_hMkhQQNVCMEpBxwiUALz6lwErPQxNxQfQDqnG4,2029
|
3
3
|
indexify/executor/api_objects.py,sha256=qKQMEjr18xIq7yjpnsLPnWXP4KsVQ9O76EsbYoaL_qQ,1507
|
4
|
-
indexify/executor/
|
5
|
-
indexify/executor/
|
4
|
+
indexify/executor/blob_store/blob_store.py,sha256=XViw_KRfFSNqwcFYwMZixZF-EYCjXK2AQHdt0xh4UVo,2368
|
5
|
+
indexify/executor/blob_store/local_fs_blob_store.py,sha256=hDZXrcjKmYoH7ob0AAZ-7Zz1aoksxD8ArQEzmUSjkY4,1807
|
6
|
+
indexify/executor/blob_store/metrics/blob_store.py,sha256=5_xiPREeHWFtxFh1NupDsF8zP4pmUPgLNNn-UE9Uzvc,1008
|
7
|
+
indexify/executor/blob_store/s3_blob_store.py,sha256=4Hn1r5XpiNdfa-buRge0hR36j8j3xmuQC-7noOoOFo0,3319
|
8
|
+
indexify/executor/downloader.py,sha256=0tRQY8jT03-R36bBo5MsoLjxkoehWCY9-61fsoW3Gng,13507
|
9
|
+
indexify/executor/executor.py,sha256=uZiERFDKBQLmfPgun6bxEN7JE-BEEqmdGwawLjTAjf0,16499
|
6
10
|
indexify/executor/executor_flavor.py,sha256=uilzDQVVYlQGR1MVnrUC4NevUActDWHdnJkr38M6kTk,118
|
7
|
-
indexify/executor/function_executor/function_executor.py,sha256=
|
11
|
+
indexify/executor/function_executor/function_executor.py,sha256=agfUxzSQ-2TqkpMhW3OvOSMF_EhpemetaL3_dYp29Ro,11888
|
8
12
|
indexify/executor/function_executor/function_executor_state.py,sha256=ljPm1IrRMJ8hFklwvFp7Xax2HMpUIOHm0DwOxxMcy7U,4336
|
9
|
-
indexify/executor/function_executor/function_executor_states_container.py,sha256=
|
10
|
-
indexify/executor/function_executor/function_executor_status.py,sha256=
|
11
|
-
indexify/executor/function_executor/health_checker.py,sha256=
|
12
|
-
indexify/executor/function_executor/invocation_state_client.py,sha256=
|
13
|
+
indexify/executor/function_executor/function_executor_states_container.py,sha256=MFtHNMkzL3zzoa4YdWaw6X21dzo3P4vdEyJ_OKAuTlw,3766
|
14
|
+
indexify/executor/function_executor/function_executor_status.py,sha256=Ms8tHG0wlw__pToeQIfBV6SO9c4tPu3UQgJAwXUkg2M,3597
|
15
|
+
indexify/executor/function_executor/health_checker.py,sha256=EVA65Rn7eAC7HXzhZgScMDc57ODnvFopopdye7j1hfU,6254
|
16
|
+
indexify/executor/function_executor/invocation_state_client.py,sha256=VTpeNxxfsa0ej20Q_ker5RZVdHiu59HWd5qNOjo6DBQ,9800
|
13
17
|
indexify/executor/function_executor/metrics/function_executor.py,sha256=TDksxLRJr-P9ZKhF2Orsaxzzb4lVIBxFEjd_9Zv53Ng,6313
|
14
18
|
indexify/executor/function_executor/metrics/function_executor_state.py,sha256=qheMhnoiYLiZB7ky5EyegfDy4Mr0Zh83bOE0gJ38YmU,1607
|
15
19
|
indexify/executor/function_executor/metrics/function_executor_state_container.py,sha256=6rrAfml-TivjkHatCM4BLY7jmVs523Wzb6QIysncc-0,302
|
@@ -23,15 +27,16 @@ indexify/executor/function_executor/server/subprocess_function_executor_server.p
|
|
23
27
|
indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py,sha256=g1AUbhOoPsdhp_50Ayahdyv1Ix5-nEBE8orOQfkATpM,4470
|
24
28
|
indexify/executor/function_executor/single_task_runner.py,sha256=OY3a2znwtuv0_Pqn9r5ScGhekNn1OquznKmaGnQL71k,13979
|
25
29
|
indexify/executor/function_executor/task_input.py,sha256=wSrHR4m0juiGClQyeVdhRC37QzDt6Rrjq-ZXJkfBi9k,584
|
26
|
-
indexify/executor/function_executor/task_output.py,sha256=
|
27
|
-
indexify/executor/grpc/channel_manager.py,sha256=
|
28
|
-
indexify/executor/grpc/
|
29
|
-
indexify/executor/grpc/function_executor_controller.py,sha256=pfxMgyxLR2FFbLjyY5Yib8RSaI_6YeQOdf_VscXLqN0,18645
|
30
|
+
indexify/executor/function_executor/task_output.py,sha256=snh25Ynj7uss1SUIeivpDYWdRkODoDpdPrQrGvnjyIs,3077
|
31
|
+
indexify/executor/grpc/channel_manager.py,sha256=ihDkLoiGBLfSmoA2szbntjCfL3E_NDf5LABRXE7YRec,6330
|
32
|
+
indexify/executor/grpc/function_executor_controller.py,sha256=b_xqiXsA79yIMCHtRJv0i0px6QMToIj9nCTc_km9fHk,16070
|
30
33
|
indexify/executor/grpc/metrics/channel_manager.py,sha256=k-WArgklmP5WhjcmFmrgRblB7yc3XlaOXO8owRyV-mw,649
|
34
|
+
indexify/executor/grpc/metrics/state_reconciler.py,sha256=0aI2IM4XztKxFa7NCxYSLafw_iiej3p07yEiKyewXIM,585
|
31
35
|
indexify/executor/grpc/metrics/state_reporter.py,sha256=GggBEjMzQUYIG95LtTS4fUg1u9jYowkaXoUXppAXucs,543
|
32
|
-
indexify/executor/grpc/
|
33
|
-
indexify/executor/grpc/
|
34
|
-
indexify/executor/grpc/
|
36
|
+
indexify/executor/grpc/metrics/task_controller.py,sha256=9Nm86nGxL2rZ3rAORB0_CBdO--Fe4MBrewVW4CqGyOU,222
|
37
|
+
indexify/executor/grpc/state_reconciler.py,sha256=Yx_r1oUBGWjHWqUSUhap2ALZpz_o1Ue-SdL7BOgWQQU,19273
|
38
|
+
indexify/executor/grpc/state_reporter.py,sha256=iixvl1nzJ_SfQhTUJpBEfiVlFPvOxQxvZyqT5Szk43Q,10503
|
39
|
+
indexify/executor/grpc/task_controller.py,sha256=IQkxKYfj8TLhmoLi4xDVjEKBZlK6ttP1w2a9kOlX58A,20277
|
35
40
|
indexify/executor/metrics/downloader.py,sha256=lctPh8xjkXeLEFJnl1hNrD1yEhLhIl5sggsR4Yoe_Zc,2746
|
36
41
|
indexify/executor/metrics/executor.py,sha256=ua-Vv_k1CB4juJdF7tEBQbBMksqWAA3iXKKMKXZUCLk,2369
|
37
42
|
indexify/executor/metrics/task_fetcher.py,sha256=iJEwCLzYr2cuz7hRvNiqaa2nvQP4OrA0hm0iJY0YKG0,736
|
@@ -48,13 +53,13 @@ indexify/executor/monitoring/server.py,sha256=yzdYhcxnmY6uTQUMt3vatF5jilN52ZtfFs
|
|
48
53
|
indexify/executor/monitoring/startup_probe_handler.py,sha256=zXXsBU15SMlBx1bSFpxWDfed1VHtKKnwvLQ8-frpG98,425
|
49
54
|
indexify/executor/runtime_probes.py,sha256=bo6Dq6AGZpJH099j0DHtVSDEH80tv3j9MXf3VXSx_p8,2182
|
50
55
|
indexify/executor/task_fetcher.py,sha256=p3iEsWyGi0ZMPAv0183smzOUD1KycQ_dXsyd9mpB9IU,3529
|
51
|
-
indexify/executor/task_reporter.py,sha256=
|
56
|
+
indexify/executor/task_reporter.py,sha256=AbestQmKxpJo0pfJWnB_9ziOnAdFmMScvWzFTeyG6X4,12382
|
52
57
|
indexify/executor/task_runner.py,sha256=2-f6Uupu_aVPg34G27yuiPTC6eE4XnT-qizpzPryzDI,7134
|
53
|
-
indexify/proto/executor_api.proto,sha256=
|
54
|
-
indexify/proto/executor_api_pb2.py,sha256=
|
55
|
-
indexify/proto/executor_api_pb2.pyi,sha256=
|
58
|
+
indexify/proto/executor_api.proto,sha256=K1lwFmk042GA1tp8s633FZJVg6Fi8f8LtAuFj8Gz7XU,9930
|
59
|
+
indexify/proto/executor_api_pb2.py,sha256=5y570_FIgc6WFhHVAKWFieMuUhyKBA7rPJJ4DJ5hcCM,14054
|
60
|
+
indexify/proto/executor_api_pb2.pyi,sha256=5eJJJjPNdTMSttNUOtzGwADbASsCh7138de_Y3l8uq4,18612
|
56
61
|
indexify/proto/executor_api_pb2_grpc.py,sha256=GGiDtyQlA2382E_ZyKUBYcWNEJHH_RlulieStKfkJXI,9514
|
57
|
-
indexify-0.3.
|
58
|
-
indexify-0.3.
|
59
|
-
indexify-0.3.
|
60
|
-
indexify-0.3.
|
62
|
+
indexify-0.3.20.dist-info/METADATA,sha256=rg0FBC-z-e_Ft09YgQ5ldhaS3u5XKtmqxNFFMa9074A,1198
|
63
|
+
indexify-0.3.20.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
64
|
+
indexify-0.3.20.dist-info/entry_points.txt,sha256=GU9wmsgvN7nQw3N2X0PMYn1RSvF6CrhH9RuC2D8d3Gk,53
|
65
|
+
indexify-0.3.20.dist-info/RECORD,,
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import asyncio
|
2
|
-
from typing import List, Set
|
3
|
-
|
4
|
-
|
5
|
-
class CompletedTasksContainer:
|
6
|
-
"""An asyncio concurrent container for the completed task IDs."""
|
7
|
-
|
8
|
-
def __init__(self):
|
9
|
-
# The fields below are protected by the lock.
|
10
|
-
self._lock: asyncio.Lock = asyncio.Lock()
|
11
|
-
self._completed_task_ids: Set[str] = set()
|
12
|
-
|
13
|
-
async def add(self, task_id: str) -> None:
|
14
|
-
"""Add a task to the container."""
|
15
|
-
async with self._lock:
|
16
|
-
self._completed_task_ids.add(task_id)
|
17
|
-
|
18
|
-
async def contains(self, task_id: str) -> bool:
|
19
|
-
"""Check if the task is in the container."""
|
20
|
-
async with self._lock:
|
21
|
-
return task_id in self._completed_task_ids
|
22
|
-
|
23
|
-
async def replace(self, task_ids: List[str]) -> None:
|
24
|
-
"""Replaces the task IDs with the supplied task IDs."""
|
25
|
-
async with self._lock:
|
26
|
-
self._completed_task_ids = set(task_ids)
|
File without changes
|
File without changes
|