indexify 0.4.27__tar.gz → 0.4.29__tar.gz

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 (75) hide show
  1. {indexify-0.4.27 → indexify-0.4.29}/PKG-INFO +4 -4
  2. {indexify-0.4.27 → indexify-0.4.29}/pyproject.toml +4 -4
  3. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/executor.py +11 -7
  4. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/function_executor_controller.py +10 -12
  5. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/message_validators.py +1 -0
  6. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/prepare_task.py +2 -2
  7. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/run_task.py +3 -3
  8. indexify-0.4.29/src/indexify/executor/monitoring/desired_state_handler.py +24 -0
  9. indexify-0.4.29/src/indexify/executor/monitoring/reported_state_handler.py +22 -0
  10. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/server.py +4 -0
  11. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/state_reconciler.py +3 -0
  12. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/state_reporter.py +9 -4
  13. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/proto/executor_api.proto +1 -1
  14. indexify-0.4.29/src/indexify/proto/executor_api_pb2.py +88 -0
  15. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/proto/executor_api_pb2.pyi +4 -4
  16. indexify-0.4.27/src/indexify/proto/executor_api_pb2.py +0 -88
  17. {indexify-0.4.27 → indexify-0.4.29}/README.md +0 -0
  18. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/cli/__init__.py +0 -0
  19. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/cli/build_image.py +0 -0
  20. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/cli/deploy.py +0 -0
  21. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/cli/executor.py +0 -0
  22. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/README.md +0 -0
  23. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/blob_store/blob_store.py +0 -0
  24. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/blob_store/local_fs_blob_store.py +0 -0
  25. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/blob_store/metrics/blob_store.py +0 -0
  26. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/blob_store/s3_blob_store.py +0 -0
  27. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/channel_manager.py +0 -0
  28. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_allowlist.py +0 -0
  29. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/function_executor.py +0 -0
  30. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/health_checker.py +0 -0
  31. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/invocation_state_client.py +0 -0
  32. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/metrics/function_executor.py +0 -0
  33. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/metrics/health_checker.py +0 -0
  34. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/metrics/invocation_state_client.py +0 -0
  35. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/server/client_configuration.py +0 -0
  36. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/server/function_executor_server.py +0 -0
  37. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/server/function_executor_server_factory.py +0 -0
  38. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/server/subprocess_function_executor_server.py +0 -0
  39. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor/server/subprocess_function_executor_server_factory.py +0 -0
  40. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/__init__.py +0 -0
  41. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/aio_utils.py +0 -0
  42. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/completed_task_metrics.py +0 -0
  43. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/create_function_executor.py +0 -0
  44. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/debug_event_loop.py +0 -0
  45. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/downloads.py +0 -0
  46. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/events.py +0 -0
  47. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/finalize_task.py +0 -0
  48. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/loggers.py +0 -0
  49. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/completed_task_metrics.py +0 -0
  50. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/downloads.py +0 -0
  51. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/finalize_task.py +0 -0
  52. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/function_executor_controller.py +0 -0
  53. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/prepare_task.py +0 -0
  54. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/metrics/run_task.py +0 -0
  55. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/task_info.py +0 -0
  56. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/task_input.py +0 -0
  57. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/task_output.py +0 -0
  58. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/function_executor_controller/terminate_function_executor.py +0 -0
  59. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/host_resources/host_resources.py +0 -0
  60. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/host_resources/nvidia_gpu.py +0 -0
  61. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/host_resources/nvidia_gpu_allocator.py +0 -0
  62. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/logging.py +0 -0
  63. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/metrics/channel_manager.py +0 -0
  64. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/metrics/executor.py +0 -0
  65. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/metrics/state_reconciler.py +0 -0
  66. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/metrics/state_reporter.py +0 -0
  67. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/handler.py +0 -0
  68. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/health_check_handler.py +0 -0
  69. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/health_checker/generic_health_checker.py +0 -0
  70. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/health_checker/health_checker.py +0 -0
  71. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/health_checker/metrics/health_checker.py +0 -0
  72. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/metrics.py +0 -0
  73. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/prometheus_metrics_handler.py +0 -0
  74. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/executor/monitoring/startup_probe_handler.py +0 -0
  75. {indexify-0.4.27 → indexify-0.4.29}/src/indexify/proto/executor_api_pb2_grpc.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: indexify
3
- Version: 0.4.27
3
+ Version: 0.4.29
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
@@ -14,16 +14,16 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Requires-Dist: aiohttp (>=3.12.15,<4.0.0)
17
- Requires-Dist: boto3 (>=1.40.6,<2.0.0)
17
+ Requires-Dist: boto3 (>=1.40.12,<2.0.0)
18
18
  Requires-Dist: docker (>=7.1.0,<8.0.0)
19
19
  Requires-Dist: httpx[http2] (==0.27.2)
20
20
  Requires-Dist: nanoid (>=2.0.0,<3.0.0)
21
21
  Requires-Dist: prometheus-client (>=0.22.1,<0.23.0)
22
22
  Requires-Dist: psutil (>=7.0.0,<8.0.0)
23
23
  Requires-Dist: pydantic (>=2.11,<3.0)
24
- Requires-Dist: requests (>=2.32.4,<3.0.0)
24
+ Requires-Dist: requests (>=2.32.5,<3.0.0)
25
25
  Requires-Dist: structlog (==25.4.0)
26
- Requires-Dist: tensorlake (==0.2.39)
26
+ Requires-Dist: tensorlake (==0.2.42)
27
27
  Requires-Dist: urllib3 (>=2.5.0,<3.0.0)
28
28
  Project-URL: Repository, https://github.com/tensorlakeai/indexify
29
29
  Description-Content-Type: text/markdown
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "indexify"
3
3
  # Incremented if any of the components provided in this packages are updated.
4
- version = "0.4.27"
4
+ version = "0.4.29"
5
5
  description = "Open Source Indexify components and helper tools"
6
6
  authors = ["Tensorlake Inc. <support@tensorlake.ai>"]
7
7
  license = "Apache 2.0"
@@ -25,11 +25,11 @@ httpx = { version = "0.27.2", extras = ["http2"] }
25
25
  pydantic = "^2.11"
26
26
  prometheus-client = "^0.22.1"
27
27
  psutil = "^7.0.0"
28
- boto3 = "^1.40.6"
28
+ boto3 = "^1.40.12"
29
29
  structlog = "25.4.0"
30
30
  # Adds function-executor binary, utils lib, sdk used in indexify-cli commands.
31
31
  # We need to specify the tensorlake version exactly because pip install doesn't respect poetry.lock files.
32
- tensorlake = "0.2.39"
32
+ tensorlake = "0.2.42"
33
33
  # Uncomment the next line to use local tensorlake package (only for development!)
34
34
  # tensorlake = { path = "../tensorlake", develop = true }
35
35
  # grpcio is provided by tensorlake
@@ -40,7 +40,7 @@ tensorlake = "0.2.39"
40
40
  docker = "^7.1.0"
41
41
 
42
42
  # Packages pinned to mitigate vulnerabilities, not a direct dependcy of tensorlake
43
- requests = "^2.32.4"
43
+ requests = "^2.32.5"
44
44
  urllib3 = "^2.5.0"
45
45
 
46
46
  [tool.poetry.group.dev.dependencies]
@@ -23,9 +23,11 @@ from .metrics.executor import (
23
23
  metric_executor_info,
24
24
  metric_executor_state,
25
25
  )
26
+ from .monitoring.desired_state_handler import DesiredStateHandler
26
27
  from .monitoring.health_check_handler import HealthCheckHandler
27
28
  from .monitoring.health_checker.health_checker import HealthChecker
28
29
  from .monitoring.prometheus_metrics_handler import PrometheusMetricsHandler
30
+ from .monitoring.reported_state_handler import ReportedStateHandler
29
31
  from .monitoring.server import MonitoringServer
30
32
  from .monitoring.startup_probe_handler import StartupProbeHandler
31
33
  from .state_reconciler import ExecutorStateReconciler
@@ -59,13 +61,6 @@ class Executor:
59
61
  protocol = "https"
60
62
 
61
63
  self._startup_probe_handler = StartupProbeHandler()
62
- self._monitoring_server = MonitoringServer(
63
- host=monitoring_server_host,
64
- port=monitoring_server_port,
65
- startup_probe_handler=self._startup_probe_handler,
66
- health_probe_handler=HealthCheckHandler(health_checker),
67
- metrics_handler=PrometheusMetricsHandler(),
68
- )
69
64
  self._channel_manager = ChannelManager(
70
65
  server_address=grpc_server_addr,
71
66
  config_path=config_path,
@@ -96,6 +91,15 @@ class Executor:
96
91
  state_reporter=self._state_reporter,
97
92
  logger=self._logger,
98
93
  )
94
+ self._monitoring_server = MonitoringServer(
95
+ host=monitoring_server_host,
96
+ port=monitoring_server_port,
97
+ startup_probe_handler=self._startup_probe_handler,
98
+ health_probe_handler=HealthCheckHandler(health_checker),
99
+ metrics_handler=PrometheusMetricsHandler(),
100
+ reported_state_handler=ReportedStateHandler(self._state_reporter),
101
+ desired_state_handler=DesiredStateHandler(self._state_reconciler),
102
+ )
99
103
  self._run_aio_task: Optional[asyncio.Task] = None
100
104
  self._shutdown_aio_task: Optional[asyncio.Task] = None
101
105
 
@@ -137,7 +137,7 @@ class FunctionExecutorController:
137
137
  self._tasks: Dict[str, TaskInfo] = {}
138
138
  # Tracking of task execution on Function Executor.
139
139
  self._runnable_tasks: List[TaskInfo] = []
140
- self._running_task: Optional[TaskInfo] = None
140
+ self._running_tasks: List[TaskInfo] = []
141
141
 
142
142
  def function_executor_id(self) -> str:
143
143
  return self._fe_description.id
@@ -538,11 +538,9 @@ class FunctionExecutorController:
538
538
 
539
539
  self._start_termination(
540
540
  fe_termination_reason=FunctionExecutorTerminationReason.FUNCTION_EXECUTOR_TERMINATION_REASON_UNHEALTHY,
541
- allocation_ids_caused_termination=(
542
- []
543
- if self._running_task is None
544
- else [self._running_task.allocation.allocation_id]
545
- ),
541
+ allocation_ids_caused_termination=[
542
+ task.allocation.allocation_id for task in self._running_tasks
543
+ ],
546
544
  )
547
545
 
548
546
  def _handle_event_task_preparation_finished(
@@ -601,7 +599,7 @@ class FunctionExecutorController:
601
599
 
602
600
  if (
603
601
  self._internal_state == _FE_CONTROLLER_STATE.RUNNING
604
- and self._running_task is not None
602
+ and len(self._running_tasks) == self._fe_description.max_concurrency
605
603
  ):
606
604
  return
607
605
 
@@ -626,13 +624,13 @@ class FunctionExecutorController:
626
624
  _FE_CONTROLLER_STATE.TERMINATED,
627
625
  ]:
628
626
  if task_info.output is None:
629
- # The output can be set already by FE startup failure handler.
627
+ # The output could be set already by FE startup failure handler.
630
628
  task_info.output = TaskOutput.function_executor_terminated(
631
629
  task_info.allocation
632
630
  )
633
631
  self._start_task_finalization(task_info)
634
632
  elif self._internal_state == _FE_CONTROLLER_STATE.RUNNING:
635
- self._running_task = task_info
633
+ self._running_tasks.append(task_info)
636
634
  next_aio = run_task_on_function_executor(
637
635
  task_info=task_info,
638
636
  function_executor=self._fe,
@@ -667,7 +665,8 @@ class FunctionExecutorController:
667
665
 
668
666
  Doesn't raise any exceptions. Doesn't block.
669
667
  """
670
- self._running_task = None
668
+ task_info: TaskInfo = event.task_info
669
+ self._running_tasks.remove(task_info)
671
670
 
672
671
  if event.function_executor_termination_reason is None:
673
672
  self._add_event(
@@ -681,7 +680,6 @@ class FunctionExecutorController:
681
680
  ],
682
681
  )
683
682
 
684
- task_info: TaskInfo = event.task_info
685
683
  if task_info.output is None:
686
684
  # `run_task_on_function_executor` guarantees that the output is set in
687
685
  # all cases including task cancellations. If this didn't happen then some
@@ -944,7 +942,7 @@ def _to_data_payload_encoding(
944
942
  return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UTF8_TEXT
945
943
  else:
946
944
  logger.error(
947
- "Unexpected encoding for SerializedObject",
945
+ "unexpected encoding for SerializedObject",
948
946
  encoding=SerializedObjectEncoding.Name(encoding),
949
947
  )
950
948
  return DataPayloadEncoding.DATA_PAYLOAD_ENCODING_UNKNOWN
@@ -25,6 +25,7 @@ def validate_function_executor_description(
25
25
  validator.required_field("customer_code_timeout_ms")
26
26
  validator.required_field("graph")
27
27
  validator.required_field("resources")
28
+ validator.required_field("max_concurrency")
28
29
 
29
30
  _validate_data_payload(function_executor_description.graph)
30
31
 
@@ -65,7 +65,7 @@ async def prepare_task(
65
65
  logger=logger,
66
66
  )
67
67
  logger.info(
68
- "Task was prepared for execution",
68
+ "task was prepared for execution",
69
69
  duration=time.monotonic() - start_time,
70
70
  )
71
71
  return TaskPreparationFinished(
@@ -76,7 +76,7 @@ async def prepare_task(
76
76
  return TaskPreparationFinished(task_info=task_info, is_success=False)
77
77
  except BaseException as e:
78
78
  logger.error(
79
- "Failed to prepare task for execution",
79
+ "failed to prepare task for execution",
80
80
  exc_info=e,
81
81
  duration=time.monotonic() - start_time,
82
82
  )
@@ -176,7 +176,7 @@ async def run_task_on_function_executor(
176
176
  # This is an unexpected exception; we believe that this
177
177
  # indicates an internal error.
178
178
  logger.error(
179
- "Unexpected internal error during task lifecycle RPC sequence", exc_info=e
179
+ "unexpected internal error during task lifecycle RPC sequence", exc_info=e
180
180
  )
181
181
  task_info.output = TaskOutput.internal_error(
182
182
  allocation=task_info.allocation,
@@ -357,7 +357,7 @@ def _to_task_outcome_code(
357
357
  return TaskOutcomeCode.TASK_OUTCOME_CODE_FAILURE
358
358
  else:
359
359
  logger.warning(
360
- "Unknown TaskOutcomeCode received from Function Executor",
360
+ "unknown TaskOutcomeCode received from Function Executor",
361
361
  value=FETaskOutcomeCode.Name(fe_task_outcome_code),
362
362
  )
363
363
  return TaskOutcomeCode.TASK_OUTCOME_CODE_UNKNOWN
@@ -379,7 +379,7 @@ def _to_task_failure_reason(
379
379
  return TaskFailureReason.TASK_FAILURE_REASON_INTERNAL_ERROR
380
380
  else:
381
381
  logger.warning(
382
- "Unknown TaskFailureReason received from Function Executor",
382
+ "unknown TaskFailureReason received from Function Executor",
383
383
  value=FETaskFailureReason.Name(fe_task_failure_reason),
384
384
  )
385
385
  return TaskFailureReason.TASK_FAILURE_REASON_UNKNOWN
@@ -0,0 +1,24 @@
1
+ from aiohttp import web
2
+
3
+ from indexify.proto.executor_api_pb2 import (
4
+ DesiredExecutorState,
5
+ )
6
+
7
+ from ..state_reconciler import ExecutorStateReconciler
8
+ from .handler import Handler
9
+
10
+
11
+ class DesiredStateHandler(Handler):
12
+ def __init__(self, state_reconciler: ExecutorStateReconciler):
13
+ self._state_reconciler = state_reconciler
14
+
15
+ async def handle(self, request: web.Request) -> web.Response:
16
+ desired_state: DesiredExecutorState | None = (
17
+ self._state_reconciler.get_desired_state()
18
+ )
19
+ if desired_state is None:
20
+ return web.Response(
21
+ status=200, text="No desired state received from Server yet"
22
+ )
23
+ else:
24
+ return web.Response(text=str(desired_state))
@@ -0,0 +1,22 @@
1
+ from aiohttp import web
2
+
3
+ from indexify.proto.executor_api_pb2 import (
4
+ ReportExecutorStateRequest,
5
+ )
6
+
7
+ from ..state_reporter import ExecutorStateReporter
8
+ from .handler import Handler
9
+
10
+
11
+ class ReportedStateHandler(Handler):
12
+ def __init__(self, state_reporter: ExecutorStateReporter):
13
+ self._state_reporter = state_reporter
14
+
15
+ async def handle(self, request: web.Request) -> web.Response:
16
+ request: ReportExecutorStateRequest | None = (
17
+ self._state_reporter.last_state_report_request()
18
+ )
19
+ if request is None:
20
+ return web.Response(status=200, text="No state reported so far")
21
+ else:
22
+ return web.Response(text=str(request))
@@ -11,6 +11,8 @@ class MonitoringServer:
11
11
  startup_probe_handler: Handler,
12
12
  health_probe_handler: Handler,
13
13
  metrics_handler: Handler,
14
+ reported_state_handler: Handler,
15
+ desired_state_handler: Handler,
14
16
  ):
15
17
  self._host = host
16
18
  self._port = port
@@ -20,6 +22,8 @@ class MonitoringServer:
20
22
  web.get("/monitoring/startup", startup_probe_handler.handle),
21
23
  web.get("/monitoring/health", health_probe_handler.handle),
22
24
  web.get("/monitoring/metrics", metrics_handler.handle),
25
+ web.get("/state/reported", reported_state_handler.handle),
26
+ web.get("/state/desired", desired_state_handler.handle),
23
27
  ]
24
28
  )
25
29
  self._app_runner: web.AppRunner = web.AppRunner(self._app)
@@ -88,6 +88,9 @@ class ExecutorStateReconciler:
88
88
  )
89
89
  self._last_desired_state: Optional[DesiredExecutorState] = None
90
90
 
91
+ def get_desired_state(self) -> Optional[DesiredExecutorState]:
92
+ return self._last_desired_state
93
+
91
94
  def run(self):
92
95
  """Runs the state reconciler.
93
96
 
@@ -89,6 +89,10 @@ class ExecutorStateReporter:
89
89
  self._pending_task_results: List[TaskResult] = []
90
90
  self._pending_fe_updates: List[FunctionExecutorUpdate] = []
91
91
  self._function_executor_states: Dict[str, FunctionExecutorState] = {}
92
+ self._last_state_report_request: Optional[ReportExecutorStateRequest] = None
93
+
94
+ def last_state_report_request(self) -> Optional[ReportExecutorStateRequest]:
95
+ return self._last_state_report_request
92
96
 
93
97
  def update_executor_status(self, value: ExecutorStatus) -> None:
94
98
  self._executor_status = value
@@ -203,7 +207,11 @@ class ExecutorStateReporter:
203
207
  try:
204
208
  state: ExecutorState = self._current_executor_state()
205
209
  update: ExecutorUpdate = self._remove_pending_update()
210
+ request: ReportExecutorStateRequest = ReportExecutorStateRequest(
211
+ executor_state=state, executor_update=update
212
+ )
206
213
  _log_reported_executor_update(update, self._logger)
214
+ self._last_state_report_request = request
207
215
 
208
216
  with (
209
217
  metric_state_report_rpc_errors.count_exceptions(),
@@ -211,10 +219,7 @@ class ExecutorStateReporter:
211
219
  ):
212
220
  metric_state_report_rpcs.inc()
213
221
  await stub.report_executor_state(
214
- ReportExecutorStateRequest(
215
- executor_state=state, executor_update=update
216
- ),
217
- timeout=_REPORT_RPC_TIMEOUT_SEC,
222
+ request, timeout=_REPORT_RPC_TIMEOUT_SEC
218
223
  )
219
224
  self._state_reported_event.set()
220
225
  self._health_checker.server_connection_state_changed(
@@ -112,7 +112,6 @@ message FunctionExecutorDescription {
112
112
  optional string graph_name = 3;
113
113
  optional string graph_version = 4;
114
114
  optional string function_name = 5;
115
- optional string image_uri = 6;
116
115
  repeated string secret_names = 7;
117
116
  // Timeout for customer code duration during FE creation.
118
117
  optional uint32 customer_code_timeout_ms = 9;
@@ -123,6 +122,7 @@ message FunctionExecutorDescription {
123
122
  // Starts with "file://"" prefix followed by an absolute directory path if the data is stored on a local file system.
124
123
  // Deprecated: most probably going to be removed once external FE logs ingestion pipeline gets implemented.
125
124
  optional string output_payload_uri_prefix = 12;
125
+ optional uint32 max_concurrency = 13;
126
126
  }
127
127
 
128
128
  message FunctionExecutorState {
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: indexify/proto/executor_api.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+
13
+ _runtime_version.ValidateProtobufRuntimeVersion(
14
+ _runtime_version.Domain.PUBLIC, 6, 31, 1, "", "indexify/proto/executor_api.proto"
15
+ )
16
+ # @@protoc_insertion_point(imports)
17
+
18
+ _sym_db = _symbol_database.Default()
19
+
20
+
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
+ b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"\x8b\x02\n\x0b\x44\x61taPayload\x12\x11\n\x04size\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x18\n\x0bsha256_hash\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x03uri\x18\x04 \x01(\tH\x02\x88\x01\x01\x12;\n\x08\x65ncoding\x18\x05 \x01(\x0e\x32$.executor_api_pb.DataPayloadEncodingH\x03\x88\x01\x01\x12\x1d\n\x10\x65ncoding_version\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06offset\x18\x07 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_sizeB\x0e\n\x0c_sha256_hashB\x06\n\x04_uriB\x0b\n\t_encodingB\x13\n\x11_encoding_versionB\t\n\x07_offset"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"\xd8\x01\n\x19\x46unctionExecutorResources\x12\x1b\n\x0e\x63pu_ms_per_sec\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\x11\n\x0f_cpu_ms_per_secB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xbf\x04\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\x14\n\x0csecret_names\x18\x07 \x03(\t\x12%\n\x18\x63ustomer_code_timeout_ms\x18\t \x01(\rH\x05\x88\x01\x01\x12\x30\n\x05graph\x18\n \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x06\x88\x01\x01\x12\x42\n\tresources\x18\x0b \x01(\x0b\x32*.executor_api_pb.FunctionExecutorResourcesH\x07\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\x0c \x01(\tH\x08\x88\x01\x01\x12\x1c\n\x0fmax_concurrency\x18\r \x01(\rH\t\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\x1b\n\x19_customer_code_timeout_msB\x08\n\x06_graphB\x0c\n\n_resourcesB\x1c\n\x1a_output_payload_uri_prefixB\x12\n\x10_max_concurrency"\xcf\x02\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\x12S\n\x12termination_reason\x18\x03 \x01(\x0e\x32\x32.executor_api_pb.FunctionExecutorTerminationReasonH\x02\x88\x01\x01\x12)\n!allocation_ids_caused_termination\x18\x04 \x03(\tB\x0e\n\x0c_descriptionB\t\n\x07_statusB\x15\n\x13_termination_reason"\x8c\x02\n\x16\x46unctionExecutorUpdate\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12\x39\n\x0estartup_stdout\x18\x02 \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x01\x88\x01\x01\x12\x39\n\x0estartup_stderr\x18\x03 \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x11\n\x0f_startup_stdoutB\x11\n\x0f_startup_stderr"\xce\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x03\x88\x01\x01\x12<\n\x0ftotal_resources\x18\r \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x04\x88\x01\x01\x12N\n!total_function_executor_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x05\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\x06\x88\x01\x01\x12\x19\n\x0cserver_clock\x18\x0c \x01(\x04H\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\x0b\n\t_hostnameB\n\n\x08_versionB\t\n\x07_statusB\x12\n\x10_total_resourcesB$\n"_total_function_executor_resourcesB\r\n\x0b_state_hashB\x0f\n\r_server_clock"\xb9\x01\n\x0e\x45xecutorUpdate\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x0ctask_results\x18\x02 \x03(\x0b\x32\x1b.executor_api_pb.TaskResult\x12J\n\x19\x66unction_executor_updates\x18\x03 \x03(\x0b\x32\'.executor_api_pb.FunctionExecutorUpdateB\x0e\n\x0c_executor_id"\xbf\x01\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x12=\n\x0f\x65xecutor_update\x18\x02 \x01(\x0b\x32\x1f.executor_api_pb.ExecutorUpdateH\x01\x88\x01\x01\x42\x11\n\x0f_executor_stateB\x12\n\x10_executor_update"\x1d\n\x1bReportExecutorStateResponse"\xcf\x01\n\x0fTaskRetryPolicy\x12\x18\n\x0bmax_retries\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x10initial_delay_ms\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0cmax_delay_ms\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1d\n\x10\x64\x65lay_multiplier\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0e\n\x0c_max_retriesB\x13\n\x11_initial_delay_msB\x0f\n\r_max_delay_msB\x13\n\x11_delay_multiplier"\xa0\x05\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\x17\n\ntimeout_ms\x18\n \x01(\rH\x06\x88\x01\x01\x12\x30\n\x05input\x18\x0b \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x07\x88\x01\x01\x12\x38\n\rreducer_input\x18\x0c \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x08\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\r \x01(\tH\t\x88\x01\x01\x12;\n\x0cretry_policy\x18\x0e \x01(\x0b\x32 .executor_api_pb.TaskRetryPolicyH\n\x88\x01\x01\x12\x30\n#invocation_error_payload_uri_prefix\x18\x0f \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\r\n\x0b_timeout_msB\x08\n\x06_inputB\x10\n\x0e_reducer_inputB\x1c\n\x1a_output_payload_uri_prefixB\x0f\n\r_retry_policyB&\n$_invocation_error_payload_uri_prefix"\xad\x01\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\x12\x1a\n\rallocation_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_taskB\x10\n\x0e_allocation_id"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"\xcc\x06\n\nTaskResult\x12\x14\n\x07task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rallocation_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tnamespace\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\ngraph_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x06 \x01(\tH\x05\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x07 \x01(\tH\x06\x88\x01\x01\x12;\n\x0coutcome_code\x18\t \x01(\x0e\x32 .executor_api_pb.TaskOutcomeCodeH\x07\x88\x01\x01\x12?\n\x0e\x66\x61ilure_reason\x18\n \x01(\x0e\x32".executor_api_pb.TaskFailureReasonH\x08\x88\x01\x01\x12\x16\n\x0enext_functions\x18\x0b \x03(\t\x12\x36\n\x10\x66unction_outputs\x18\x0c \x03(\x0b\x32\x1c.executor_api_pb.DataPayload\x12\x31\n\x06stdout\x18\r \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x31\n\x06stderr\x18\x0e \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12\x42\n\x17invocation_error_output\x18\x0f \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x0b\x88\x01\x01\x12"\n\x15\x65xecution_duration_ms\x18\x10 \x01(\x04H\x0c\x88\x01\x01\x42\n\n\x08_task_idB\x10\n\x0e_allocation_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\x0f\n\r_outcome_codeB\x11\n\x0f_failure_reasonB\t\n\x07_stdoutB\t\n\x07_stderrB\x1a\n\x18_invocation_error_outputB\x18\n\x16_execution_duration_ms*\xd1\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\x12$\n DATA_PAYLOAD_ENCODING_BINARY_ZIP\x10\x04*\xd6\x01\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12\x1e\n\x1aGPU_MODEL_NVIDIA_A100_40GB\x10\x01\x12\x1e\n\x1aGPU_MODEL_NVIDIA_A100_80GB\x10\x02\x12\x1e\n\x1aGPU_MODEL_NVIDIA_H100_80GB\x10\x03\x12\x1d\n\x19GPU_MODEL_NVIDIA_TESLA_T4\x10\x04\x12\x1a\n\x16GPU_MODEL_NVIDIA_A6000\x10\x05\x12\x18\n\x14GPU_MODEL_NVIDIA_A10\x10\x06*\xb3\x01\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12$\n FUNCTION_EXECUTOR_STATUS_PENDING\x10\x01\x12$\n FUNCTION_EXECUTOR_STATUS_RUNNING\x10\x02\x12\'\n#FUNCTION_EXECUTOR_STATUS_TERMINATED\x10\x03*\x94\x04\n!FunctionExecutorTerminationReason\x12\x30\n,FUNCTION_EXECUTOR_TERMINATION_REASON_UNKNOWN\x10\x00\x12\x46\nBFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_INTERNAL_ERROR\x10\x01\x12\x46\nBFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_FUNCTION_ERROR\x10\x02\x12H\nDFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_FUNCTION_TIMEOUT\x10\x03\x12\x32\n.FUNCTION_EXECUTOR_TERMINATION_REASON_UNHEALTHY\x10\x0c\x12\x37\n3FUNCTION_EXECUTOR_TERMINATION_REASON_INTERNAL_ERROR\x10\r\x12\x39\n5FUNCTION_EXECUTOR_TERMINATION_REASON_FUNCTION_TIMEOUT\x10\x0e\x12;\n7FUNCTION_EXECUTOR_TERMINATION_REASON_FUNCTION_CANCELLED\x10\x0f*\xa5\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\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x04*n\n\x0fTaskOutcomeCode\x12\x1d\n\x19TASK_OUTCOME_CODE_UNKNOWN\x10\x00\x12\x1d\n\x19TASK_OUTCOME_CODE_SUCCESS\x10\x01\x12\x1d\n\x19TASK_OUTCOME_CODE_FAILURE\x10\x02*\xb6\x02\n\x11TaskFailureReason\x12\x1f\n\x1bTASK_FAILURE_REASON_UNKNOWN\x10\x00\x12&\n"TASK_FAILURE_REASON_INTERNAL_ERROR\x10\x01\x12&\n"TASK_FAILURE_REASON_FUNCTION_ERROR\x10\x02\x12(\n$TASK_FAILURE_REASON_FUNCTION_TIMEOUT\x10\x03\x12(\n$TASK_FAILURE_REASON_INVOCATION_ERROR\x10\x04\x12&\n"TASK_FAILURE_REASON_TASK_CANCELLED\x10\x05\x12\x34\n0TASK_FAILURE_REASON_FUNCTION_EXECUTOR_TERMINATED\x10\x06\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'
23
+ )
24
+
25
+ _globals = globals()
26
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
27
+ _builder.BuildTopDescriptorsAndMessages(
28
+ DESCRIPTOR, "indexify.proto.executor_api_pb2", _globals
29
+ )
30
+ if not _descriptor._USE_C_DESCRIPTORS:
31
+ DESCRIPTOR._loaded_options = None
32
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._loaded_options = None
33
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_options = b"8\001"
34
+ _globals["_DATAPAYLOADENCODING"]._serialized_start = 5528
35
+ _globals["_DATAPAYLOADENCODING"]._serialized_end = 5737
36
+ _globals["_GPUMODEL"]._serialized_start = 5740
37
+ _globals["_GPUMODEL"]._serialized_end = 5954
38
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 5957
39
+ _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 6136
40
+ _globals["_FUNCTIONEXECUTORTERMINATIONREASON"]._serialized_start = 6139
41
+ _globals["_FUNCTIONEXECUTORTERMINATIONREASON"]._serialized_end = 6671
42
+ _globals["_EXECUTORSTATUS"]._serialized_start = 6674
43
+ _globals["_EXECUTORSTATUS"]._serialized_end = 6839
44
+ _globals["_TASKOUTCOMECODE"]._serialized_start = 6841
45
+ _globals["_TASKOUTCOMECODE"]._serialized_end = 6951
46
+ _globals["_TASKFAILUREREASON"]._serialized_start = 6954
47
+ _globals["_TASKFAILUREREASON"]._serialized_end = 7264
48
+ _globals["_DATAPAYLOAD"]._serialized_start = 55
49
+ _globals["_DATAPAYLOAD"]._serialized_end = 322
50
+ _globals["_GPURESOURCES"]._serialized_start = 324
51
+ _globals["_GPURESOURCES"]._serialized_end = 425
52
+ _globals["_HOSTRESOURCES"]._serialized_start = 428
53
+ _globals["_HOSTRESOURCES"]._serialized_end = 622
54
+ _globals["_ALLOWEDFUNCTION"]._serialized_start = 625
55
+ _globals["_ALLOWEDFUNCTION"]._serialized_end = 812
56
+ _globals["_FUNCTIONEXECUTORRESOURCES"]._serialized_start = 815
57
+ _globals["_FUNCTIONEXECUTORRESOURCES"]._serialized_end = 1031
58
+ _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 1034
59
+ _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 1609
60
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 1612
61
+ _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1947
62
+ _globals["_FUNCTIONEXECUTORUPDATE"]._serialized_start = 1950
63
+ _globals["_FUNCTIONEXECUTORUPDATE"]._serialized_end = 2218
64
+ _globals["_EXECUTORSTATE"]._serialized_start = 2221
65
+ _globals["_EXECUTORSTATE"]._serialized_end = 2939
66
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 2752
67
+ _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 2797
68
+ _globals["_EXECUTORUPDATE"]._serialized_start = 2942
69
+ _globals["_EXECUTORUPDATE"]._serialized_end = 3127
70
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 3130
71
+ _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 3321
72
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 3323
73
+ _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 3352
74
+ _globals["_TASKRETRYPOLICY"]._serialized_start = 3355
75
+ _globals["_TASKRETRYPOLICY"]._serialized_end = 3562
76
+ _globals["_TASK"]._serialized_start = 3565
77
+ _globals["_TASK"]._serialized_end = 4237
78
+ _globals["_TASKALLOCATION"]._serialized_start = 4240
79
+ _globals["_TASKALLOCATION"]._serialized_end = 4413
80
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 4415
81
+ _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 4490
82
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 4493
83
+ _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 4678
84
+ _globals["_TASKRESULT"]._serialized_start = 4681
85
+ _globals["_TASKRESULT"]._serialized_end = 5525
86
+ _globals["_EXECUTORAPI"]._serialized_start = 7267
87
+ _globals["_EXECUTORAPI"]._serialized_end = 7522
88
+ # @@protoc_insertion_point(module_scope)
@@ -232,35 +232,35 @@ class FunctionExecutorDescription(_message.Message):
232
232
  "graph_name",
233
233
  "graph_version",
234
234
  "function_name",
235
- "image_uri",
236
235
  "secret_names",
237
236
  "customer_code_timeout_ms",
238
237
  "graph",
239
238
  "resources",
240
239
  "output_payload_uri_prefix",
240
+ "max_concurrency",
241
241
  )
242
242
  ID_FIELD_NUMBER: _ClassVar[int]
243
243
  NAMESPACE_FIELD_NUMBER: _ClassVar[int]
244
244
  GRAPH_NAME_FIELD_NUMBER: _ClassVar[int]
245
245
  GRAPH_VERSION_FIELD_NUMBER: _ClassVar[int]
246
246
  FUNCTION_NAME_FIELD_NUMBER: _ClassVar[int]
247
- IMAGE_URI_FIELD_NUMBER: _ClassVar[int]
248
247
  SECRET_NAMES_FIELD_NUMBER: _ClassVar[int]
249
248
  CUSTOMER_CODE_TIMEOUT_MS_FIELD_NUMBER: _ClassVar[int]
250
249
  GRAPH_FIELD_NUMBER: _ClassVar[int]
251
250
  RESOURCES_FIELD_NUMBER: _ClassVar[int]
252
251
  OUTPUT_PAYLOAD_URI_PREFIX_FIELD_NUMBER: _ClassVar[int]
252
+ MAX_CONCURRENCY_FIELD_NUMBER: _ClassVar[int]
253
253
  id: str
254
254
  namespace: str
255
255
  graph_name: str
256
256
  graph_version: str
257
257
  function_name: str
258
- image_uri: str
259
258
  secret_names: _containers.RepeatedScalarFieldContainer[str]
260
259
  customer_code_timeout_ms: int
261
260
  graph: DataPayload
262
261
  resources: FunctionExecutorResources
263
262
  output_payload_uri_prefix: str
263
+ max_concurrency: int
264
264
  def __init__(
265
265
  self,
266
266
  id: _Optional[str] = ...,
@@ -268,12 +268,12 @@ class FunctionExecutorDescription(_message.Message):
268
268
  graph_name: _Optional[str] = ...,
269
269
  graph_version: _Optional[str] = ...,
270
270
  function_name: _Optional[str] = ...,
271
- image_uri: _Optional[str] = ...,
272
271
  secret_names: _Optional[_Iterable[str]] = ...,
273
272
  customer_code_timeout_ms: _Optional[int] = ...,
274
273
  graph: _Optional[_Union[DataPayload, _Mapping]] = ...,
275
274
  resources: _Optional[_Union[FunctionExecutorResources, _Mapping]] = ...,
276
275
  output_payload_uri_prefix: _Optional[str] = ...,
276
+ max_concurrency: _Optional[int] = ...,
277
277
  ) -> None: ...
278
278
 
279
279
  class FunctionExecutorState(_message.Message):
@@ -1,88 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # NO CHECKED-IN PROTOBUF GENCODE
4
- # source: indexify/proto/executor_api.proto
5
- # Protobuf Python Version: 6.31.1
6
- """Generated protocol buffer code."""
7
- from google.protobuf import descriptor as _descriptor
8
- from google.protobuf import descriptor_pool as _descriptor_pool
9
- from google.protobuf import runtime_version as _runtime_version
10
- from google.protobuf import symbol_database as _symbol_database
11
- from google.protobuf.internal import builder as _builder
12
-
13
- _runtime_version.ValidateProtobufRuntimeVersion(
14
- _runtime_version.Domain.PUBLIC, 6, 31, 1, "", "indexify/proto/executor_api.proto"
15
- )
16
- # @@protoc_insertion_point(imports)
17
-
18
- _sym_db = _symbol_database.Default()
19
-
20
-
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
22
- b'\n!indexify/proto/executor_api.proto\x12\x0f\x65xecutor_api_pb"\x8b\x02\n\x0b\x44\x61taPayload\x12\x11\n\x04size\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x18\n\x0bsha256_hash\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x03uri\x18\x04 \x01(\tH\x02\x88\x01\x01\x12;\n\x08\x65ncoding\x18\x05 \x01(\x0e\x32$.executor_api_pb.DataPayloadEncodingH\x03\x88\x01\x01\x12\x1d\n\x10\x65ncoding_version\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x13\n\x06offset\x18\x07 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_sizeB\x0e\n\x0c_sha256_hashB\x06\n\x04_uriB\x0b\n\t_encodingB\x13\n\x11_encoding_versionB\t\n\x07_offset"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"\xd8\x01\n\x19\x46unctionExecutorResources\x12\x1b\n\x0e\x63pu_ms_per_sec\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\x11\n\x0f_cpu_ms_per_secB\x0f\n\r_memory_bytesB\r\n\x0b_disk_bytesB\x06\n\x04_gpu"\xb3\x04\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\x18\x63ustomer_code_timeout_ms\x18\t \x01(\rH\x06\x88\x01\x01\x12\x30\n\x05graph\x18\n \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x07\x88\x01\x01\x12\x42\n\tresources\x18\x0b \x01(\x0b\x32*.executor_api_pb.FunctionExecutorResourcesH\x08\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\x0c \x01(\tH\t\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\x1b\n\x19_customer_code_timeout_msB\x08\n\x06_graphB\x0c\n\n_resourcesB\x1c\n\x1a_output_payload_uri_prefix"\xcf\x02\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\x12S\n\x12termination_reason\x18\x03 \x01(\x0e\x32\x32.executor_api_pb.FunctionExecutorTerminationReasonH\x02\x88\x01\x01\x12)\n!allocation_ids_caused_termination\x18\x04 \x03(\tB\x0e\n\x0c_descriptionB\t\n\x07_statusB\x15\n\x13_termination_reason"\x8c\x02\n\x16\x46unctionExecutorUpdate\x12\x46\n\x0b\x64\x65scription\x18\x01 \x01(\x0b\x32,.executor_api_pb.FunctionExecutorDescriptionH\x00\x88\x01\x01\x12\x39\n\x0estartup_stdout\x18\x02 \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x01\x88\x01\x01\x12\x39\n\x0estartup_stderr\x18\x03 \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x11\n\x0f_startup_stdoutB\x11\n\x0f_startup_stderr"\xce\x05\n\rExecutorState\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08hostname\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07version\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x06status\x18\x06 \x01(\x0e\x32\x1f.executor_api_pb.ExecutorStatusH\x03\x88\x01\x01\x12<\n\x0ftotal_resources\x18\r \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x04\x88\x01\x01\x12N\n!total_function_executor_resources\x18\x07 \x01(\x0b\x32\x1e.executor_api_pb.HostResourcesH\x05\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\x06\x88\x01\x01\x12\x19\n\x0cserver_clock\x18\x0c \x01(\x04H\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\x0b\n\t_hostnameB\n\n\x08_versionB\t\n\x07_statusB\x12\n\x10_total_resourcesB$\n"_total_function_executor_resourcesB\r\n\x0b_state_hashB\x0f\n\r_server_clock"\xb9\x01\n\x0e\x45xecutorUpdate\x12\x18\n\x0b\x65xecutor_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x0ctask_results\x18\x02 \x03(\x0b\x32\x1b.executor_api_pb.TaskResult\x12J\n\x19\x66unction_executor_updates\x18\x03 \x03(\x0b\x32\'.executor_api_pb.FunctionExecutorUpdateB\x0e\n\x0c_executor_id"\xbf\x01\n\x1aReportExecutorStateRequest\x12;\n\x0e\x65xecutor_state\x18\x01 \x01(\x0b\x32\x1e.executor_api_pb.ExecutorStateH\x00\x88\x01\x01\x12=\n\x0f\x65xecutor_update\x18\x02 \x01(\x0b\x32\x1f.executor_api_pb.ExecutorUpdateH\x01\x88\x01\x01\x42\x11\n\x0f_executor_stateB\x12\n\x10_executor_update"\x1d\n\x1bReportExecutorStateResponse"\xcf\x01\n\x0fTaskRetryPolicy\x12\x18\n\x0bmax_retries\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x10initial_delay_ms\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0cmax_delay_ms\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1d\n\x10\x64\x65lay_multiplier\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0e\n\x0c_max_retriesB\x13\n\x11_initial_delay_msB\x0f\n\r_max_delay_msB\x13\n\x11_delay_multiplier"\xa0\x05\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\x17\n\ntimeout_ms\x18\n \x01(\rH\x06\x88\x01\x01\x12\x30\n\x05input\x18\x0b \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x07\x88\x01\x01\x12\x38\n\rreducer_input\x18\x0c \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x08\x88\x01\x01\x12&\n\x19output_payload_uri_prefix\x18\r \x01(\tH\t\x88\x01\x01\x12;\n\x0cretry_policy\x18\x0e \x01(\x0b\x32 .executor_api_pb.TaskRetryPolicyH\n\x88\x01\x01\x12\x30\n#invocation_error_payload_uri_prefix\x18\x0f \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\r\n\x0b_timeout_msB\x08\n\x06_inputB\x10\n\x0e_reducer_inputB\x1c\n\x1a_output_payload_uri_prefixB\x0f\n\r_retry_policyB&\n$_invocation_error_payload_uri_prefix"\xad\x01\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\x12\x1a\n\rallocation_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x17\n\x15_function_executor_idB\x07\n\x05_taskB\x10\n\x0e_allocation_id"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"\xcc\x06\n\nTaskResult\x12\x14\n\x07task_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rallocation_id\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tnamespace\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\ngraph_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rgraph_version\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\rfunction_name\x18\x06 \x01(\tH\x05\x88\x01\x01\x12 \n\x13graph_invocation_id\x18\x07 \x01(\tH\x06\x88\x01\x01\x12;\n\x0coutcome_code\x18\t \x01(\x0e\x32 .executor_api_pb.TaskOutcomeCodeH\x07\x88\x01\x01\x12?\n\x0e\x66\x61ilure_reason\x18\n \x01(\x0e\x32".executor_api_pb.TaskFailureReasonH\x08\x88\x01\x01\x12\x16\n\x0enext_functions\x18\x0b \x03(\t\x12\x36\n\x10\x66unction_outputs\x18\x0c \x03(\x0b\x32\x1c.executor_api_pb.DataPayload\x12\x31\n\x06stdout\x18\r \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\t\x88\x01\x01\x12\x31\n\x06stderr\x18\x0e \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\n\x88\x01\x01\x12\x42\n\x17invocation_error_output\x18\x0f \x01(\x0b\x32\x1c.executor_api_pb.DataPayloadH\x0b\x88\x01\x01\x12"\n\x15\x65xecution_duration_ms\x18\x10 \x01(\x04H\x0c\x88\x01\x01\x42\n\n\x08_task_idB\x10\n\x0e_allocation_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\x0f\n\r_outcome_codeB\x11\n\x0f_failure_reasonB\t\n\x07_stdoutB\t\n\x07_stderrB\x1a\n\x18_invocation_error_outputB\x18\n\x16_execution_duration_ms*\xd1\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\x12$\n DATA_PAYLOAD_ENCODING_BINARY_ZIP\x10\x04*\xd6\x01\n\x08GPUModel\x12\x15\n\x11GPU_MODEL_UNKNOWN\x10\x00\x12\x1e\n\x1aGPU_MODEL_NVIDIA_A100_40GB\x10\x01\x12\x1e\n\x1aGPU_MODEL_NVIDIA_A100_80GB\x10\x02\x12\x1e\n\x1aGPU_MODEL_NVIDIA_H100_80GB\x10\x03\x12\x1d\n\x19GPU_MODEL_NVIDIA_TESLA_T4\x10\x04\x12\x1a\n\x16GPU_MODEL_NVIDIA_A6000\x10\x05\x12\x18\n\x14GPU_MODEL_NVIDIA_A10\x10\x06*\xb3\x01\n\x16\x46unctionExecutorStatus\x12$\n FUNCTION_EXECUTOR_STATUS_UNKNOWN\x10\x00\x12$\n FUNCTION_EXECUTOR_STATUS_PENDING\x10\x01\x12$\n FUNCTION_EXECUTOR_STATUS_RUNNING\x10\x02\x12\'\n#FUNCTION_EXECUTOR_STATUS_TERMINATED\x10\x03*\x94\x04\n!FunctionExecutorTerminationReason\x12\x30\n,FUNCTION_EXECUTOR_TERMINATION_REASON_UNKNOWN\x10\x00\x12\x46\nBFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_INTERNAL_ERROR\x10\x01\x12\x46\nBFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_FUNCTION_ERROR\x10\x02\x12H\nDFUNCTION_EXECUTOR_TERMINATION_REASON_STARTUP_FAILED_FUNCTION_TIMEOUT\x10\x03\x12\x32\n.FUNCTION_EXECUTOR_TERMINATION_REASON_UNHEALTHY\x10\x0c\x12\x37\n3FUNCTION_EXECUTOR_TERMINATION_REASON_INTERNAL_ERROR\x10\r\x12\x39\n5FUNCTION_EXECUTOR_TERMINATION_REASON_FUNCTION_TIMEOUT\x10\x0e\x12;\n7FUNCTION_EXECUTOR_TERMINATION_REASON_FUNCTION_CANCELLED\x10\x0f*\xa5\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\x1b\n\x17\x45XECUTOR_STATUS_STOPPED\x10\x04*n\n\x0fTaskOutcomeCode\x12\x1d\n\x19TASK_OUTCOME_CODE_UNKNOWN\x10\x00\x12\x1d\n\x19TASK_OUTCOME_CODE_SUCCESS\x10\x01\x12\x1d\n\x19TASK_OUTCOME_CODE_FAILURE\x10\x02*\xb6\x02\n\x11TaskFailureReason\x12\x1f\n\x1bTASK_FAILURE_REASON_UNKNOWN\x10\x00\x12&\n"TASK_FAILURE_REASON_INTERNAL_ERROR\x10\x01\x12&\n"TASK_FAILURE_REASON_FUNCTION_ERROR\x10\x02\x12(\n$TASK_FAILURE_REASON_FUNCTION_TIMEOUT\x10\x03\x12(\n$TASK_FAILURE_REASON_INVOCATION_ERROR\x10\x04\x12&\n"TASK_FAILURE_REASON_TASK_CANCELLED\x10\x05\x12\x34\n0TASK_FAILURE_REASON_FUNCTION_EXECUTOR_TERMINATED\x10\x06\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'
23
- )
24
-
25
- _globals = globals()
26
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
27
- _builder.BuildTopDescriptorsAndMessages(
28
- DESCRIPTOR, "indexify.proto.executor_api_pb2", _globals
29
- )
30
- if not _descriptor._USE_C_DESCRIPTORS:
31
- DESCRIPTOR._loaded_options = None
32
- _globals["_EXECUTORSTATE_LABELSENTRY"]._loaded_options = None
33
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_options = b"8\001"
34
- _globals["_DATAPAYLOADENCODING"]._serialized_start = 5516
35
- _globals["_DATAPAYLOADENCODING"]._serialized_end = 5725
36
- _globals["_GPUMODEL"]._serialized_start = 5728
37
- _globals["_GPUMODEL"]._serialized_end = 5942
38
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_start = 5945
39
- _globals["_FUNCTIONEXECUTORSTATUS"]._serialized_end = 6124
40
- _globals["_FUNCTIONEXECUTORTERMINATIONREASON"]._serialized_start = 6127
41
- _globals["_FUNCTIONEXECUTORTERMINATIONREASON"]._serialized_end = 6659
42
- _globals["_EXECUTORSTATUS"]._serialized_start = 6662
43
- _globals["_EXECUTORSTATUS"]._serialized_end = 6827
44
- _globals["_TASKOUTCOMECODE"]._serialized_start = 6829
45
- _globals["_TASKOUTCOMECODE"]._serialized_end = 6939
46
- _globals["_TASKFAILUREREASON"]._serialized_start = 6942
47
- _globals["_TASKFAILUREREASON"]._serialized_end = 7252
48
- _globals["_DATAPAYLOAD"]._serialized_start = 55
49
- _globals["_DATAPAYLOAD"]._serialized_end = 322
50
- _globals["_GPURESOURCES"]._serialized_start = 324
51
- _globals["_GPURESOURCES"]._serialized_end = 425
52
- _globals["_HOSTRESOURCES"]._serialized_start = 428
53
- _globals["_HOSTRESOURCES"]._serialized_end = 622
54
- _globals["_ALLOWEDFUNCTION"]._serialized_start = 625
55
- _globals["_ALLOWEDFUNCTION"]._serialized_end = 812
56
- _globals["_FUNCTIONEXECUTORRESOURCES"]._serialized_start = 815
57
- _globals["_FUNCTIONEXECUTORRESOURCES"]._serialized_end = 1031
58
- _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_start = 1034
59
- _globals["_FUNCTIONEXECUTORDESCRIPTION"]._serialized_end = 1597
60
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_start = 1600
61
- _globals["_FUNCTIONEXECUTORSTATE"]._serialized_end = 1935
62
- _globals["_FUNCTIONEXECUTORUPDATE"]._serialized_start = 1938
63
- _globals["_FUNCTIONEXECUTORUPDATE"]._serialized_end = 2206
64
- _globals["_EXECUTORSTATE"]._serialized_start = 2209
65
- _globals["_EXECUTORSTATE"]._serialized_end = 2927
66
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_start = 2740
67
- _globals["_EXECUTORSTATE_LABELSENTRY"]._serialized_end = 2785
68
- _globals["_EXECUTORUPDATE"]._serialized_start = 2930
69
- _globals["_EXECUTORUPDATE"]._serialized_end = 3115
70
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_start = 3118
71
- _globals["_REPORTEXECUTORSTATEREQUEST"]._serialized_end = 3309
72
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_start = 3311
73
- _globals["_REPORTEXECUTORSTATERESPONSE"]._serialized_end = 3340
74
- _globals["_TASKRETRYPOLICY"]._serialized_start = 3343
75
- _globals["_TASKRETRYPOLICY"]._serialized_end = 3550
76
- _globals["_TASK"]._serialized_start = 3553
77
- _globals["_TASK"]._serialized_end = 4225
78
- _globals["_TASKALLOCATION"]._serialized_start = 4228
79
- _globals["_TASKALLOCATION"]._serialized_end = 4401
80
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_start = 4403
81
- _globals["_GETDESIREDEXECUTORSTATESREQUEST"]._serialized_end = 4478
82
- _globals["_DESIREDEXECUTORSTATE"]._serialized_start = 4481
83
- _globals["_DESIREDEXECUTORSTATE"]._serialized_end = 4666
84
- _globals["_TASKRESULT"]._serialized_start = 4669
85
- _globals["_TASKRESULT"]._serialized_end = 5513
86
- _globals["_EXECUTORAPI"]._serialized_start = 7255
87
- _globals["_EXECUTORAPI"]._serialized_end = 7510
88
- # @@protoc_insertion_point(module_scope)
File without changes