opengris-scaler 1.12.8__tar.gz → 1.12.9__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.

Potentially problematic release.


This version of opengris-scaler might be problematic. Click here for more details.

Files changed (350) hide show
  1. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/PKG-INFO +1 -1
  2. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/object_storage_server.cpp +11 -4
  3. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/object_storage_server.h +3 -2
  4. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/pymod_object_storage_server.cpp +13 -2
  5. opengris_scaler-1.12.9/scaler/version.txt +1 -0
  6. opengris_scaler-1.12.9/tests/test_cluster_config.py +49 -0
  7. opengris_scaler-1.12.9/tests/test_config_types.py +50 -0
  8. opengris_scaler-1.12.8/tests/test_config.py → opengris_scaler-1.12.9/tests/test_scheduler_config.py +1 -85
  9. opengris_scaler-1.12.8/scaler/version.txt +0 -1
  10. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.clang-format +0 -0
  11. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/3rd-party-libraries-compile/action.yml +0 -0
  12. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/3rd-party-libraries-download/action.yml +0 -0
  13. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/3rd-party-libraries-install/action.yml +0 -0
  14. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/compile-libraries/action.yml +0 -0
  15. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/create-artifacts/action.yml +0 -0
  16. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/harden-check/action.yml +0 -0
  17. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/publish-doc/action.yml +0 -0
  18. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/run-linter/action.yml +0 -0
  19. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/run-test/action.yml +0 -0
  20. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/actions/setup-env/action.yml +0 -0
  21. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/dependabot.yml +0 -0
  22. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/build-and-test.yml +0 -0
  23. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/codeql.yml +0 -0
  24. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/dependency-review.yml +0 -0
  25. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/publish-artifact.yml +0 -0
  26. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/publish-documentation.yml +0 -0
  27. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.github/workflows/scorecard.yml +0 -0
  28. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/.gitignore +0 -0
  29. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/CMakeLists.txt +0 -0
  30. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/CMakePresets.json +0 -0
  31. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/CONTRIBUTING.md +0 -0
  32. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/LICENSE +0 -0
  33. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/LICENSE.spdx +0 -0
  34. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/NOTICE +0 -0
  35. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/README.md +0 -0
  36. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/benchmarks/dask_local_test.py +0 -0
  37. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/benchmarks/dask_remote_test.py +0 -0
  38. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/benchmarks/scaler_test.py +0 -0
  39. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/.gitignore +0 -0
  40. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/Makefile +0 -0
  41. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/make.bat +0 -0
  42. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/requirements_docs.txt +0 -0
  43. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/_static/style.css +0 -0
  44. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/_templates/layout.html +0 -0
  45. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/conf.py +0 -0
  46. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/index.rst +0 -0
  47. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/tutorials/configuration.rst +0 -0
  48. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/tutorials/examples.rst +0 -0
  49. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/tutorials/features.rst +0 -0
  50. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/tutorials/images/architecture.png +0 -0
  51. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/docs/source/tutorials/quickstart.rst +0 -0
  52. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/downloaded/capnproto-c++-1.1.0.tar.gz +0 -0
  53. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/CMakeLists.txt +0 -0
  54. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/downloaded_data.csv +0 -0
  55. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/implied_volatility.py +0 -0
  56. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/pillow.py +0 -0
  57. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/requirements_applications.txt +0 -0
  58. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/timeseries.py +0 -0
  59. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/applications/yfinance_historical_price.py +0 -0
  60. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/CMakeLists.txt +0 -0
  61. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/CMakeLists.txt +0 -0
  62. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/automated_echo_client.cpp +0 -0
  63. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/echo_client.cpp +0 -0
  64. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/echo_server.cpp +0 -0
  65. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/pingpong.cpp +0 -0
  66. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/pub_server.cpp +0 -0
  67. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/remove_iosocket.cpp +0 -0
  68. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/sub_client.cpp +0 -0
  69. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/cpp/ymq/timestamp.cpp +0 -0
  70. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/disconnect_client.py +0 -0
  71. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/graphtask_client.py +0 -0
  72. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/graphtask_nested_client.py +0 -0
  73. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/images/cat_1.jpg +0 -0
  74. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/images/cat_2.jpg +0 -0
  75. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/map_client.py +0 -0
  76. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/nested_client.py +0 -0
  77. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/readme.md +0 -0
  78. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/send_object_client.py +0 -0
  79. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/simple_client.py +0 -0
  80. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/examples/task_capabilities.py +0 -0
  81. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/pyproject.toml +0 -0
  82. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/renovate.json +0 -0
  83. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_cluster.py +0 -0
  84. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_object_storage_server.py +0 -0
  85. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_scheduler.py +0 -0
  86. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_top.py +0 -0
  87. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_webui.py +0 -0
  88. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_worker_adapter_native.py +0 -0
  89. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/run_worker_adapter_symphony.py +0 -0
  90. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/CMakeLists.txt +0 -0
  91. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/__init__.py +0 -0
  92. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/about.py +0 -0
  93. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/__init__.py +0 -0
  94. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/__init__.py +0 -0
  95. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/client_agent.py +0 -0
  96. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/disconnect_manager.py +0 -0
  97. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/future_manager.py +0 -0
  98. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/heartbeat_manager.py +0 -0
  99. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/mixins.py +0 -0
  100. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/object_manager.py +0 -0
  101. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/agent/task_manager.py +0 -0
  102. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/client.py +0 -0
  103. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/future.py +0 -0
  104. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/object_buffer.py +0 -0
  105. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/object_reference.py +0 -0
  106. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/serializer/__init__.py +0 -0
  107. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/serializer/default.py +0 -0
  108. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/client/serializer/mixins.py +0 -0
  109. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/cluster/__init__.py +0 -0
  110. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/cluster/cluster.py +0 -0
  111. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/cluster/combo.py +0 -0
  112. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/cluster/object_storage_server.py +0 -0
  113. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/cluster/scheduler.py +0 -0
  114. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/__init__.py +0 -0
  115. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/defaults.py +0 -0
  116. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/loader.py +0 -0
  117. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/mixins.py +0 -0
  118. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/__init__.py +0 -0
  119. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/cluster.py +0 -0
  120. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/native_worker_adapter.py +0 -0
  121. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/object_storage_server.py +0 -0
  122. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/scheduler.py +0 -0
  123. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/symphony_worker_adapter.py +0 -0
  124. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/top.py +0 -0
  125. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/section/webui.py +0 -0
  126. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/types/__init__.py +0 -0
  127. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/types/object_storage_server.py +0 -0
  128. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/types/worker.py +0 -0
  129. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/config/types/zmq.py +0 -0
  130. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/__init__.py +0 -0
  131. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/cluster.py +0 -0
  132. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/object_storage_server.py +0 -0
  133. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/scheduler.py +0 -0
  134. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/top.py +0 -0
  135. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/webui.py +0 -0
  136. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/worker_adapter_native.py +0 -0
  137. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/entry_points/worker_adapter_symphony.py +0 -0
  138. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/__init__.py +0 -0
  139. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/async_binder.py +0 -0
  140. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/async_connector.py +0 -0
  141. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/async_object_storage_connector.py +0 -0
  142. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/mixins.py +0 -0
  143. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/sync_connector.py +0 -0
  144. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/sync_object_storage_connector.py +0 -0
  145. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/sync_subscriber.py +0 -0
  146. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/utility.py +0 -0
  147. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/CMakeLists.txt +0 -0
  148. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/__init__.py +0 -0
  149. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/_ymq.pyi +0 -0
  150. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/bytes.h +0 -0
  151. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/common.h +0 -0
  152. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/configuration.h +0 -0
  153. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/epoll_context.cpp +0 -0
  154. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/epoll_context.h +0 -0
  155. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/error.h +0 -0
  156. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/event_loop.h +0 -0
  157. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/event_loop_thread.cpp +0 -0
  158. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/event_loop_thread.h +0 -0
  159. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/event_manager.h +0 -0
  160. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/interruptive_concurrent_queue.h +0 -0
  161. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/io_context.cpp +0 -0
  162. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/io_context.h +0 -0
  163. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/io_socket.cpp +0 -0
  164. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/io_socket.h +0 -0
  165. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/iocp_context.cpp +0 -0
  166. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/iocp_context.h +0 -0
  167. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/logging.h +0 -0
  168. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/message.h +0 -0
  169. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/message_connection.h +0 -0
  170. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/message_connection_tcp.cpp +0 -0
  171. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/message_connection_tcp.h +0 -0
  172. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/network_utils.h +0 -0
  173. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/bytes.h +0 -0
  174. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/exception.h +0 -0
  175. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/gil.h +0 -0
  176. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/io_context.h +0 -0
  177. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/io_socket.h +0 -0
  178. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/message.h +0 -0
  179. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/python.h +0 -0
  180. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/ymq.cpp +0 -0
  181. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/pymod_ymq/ymq.h +0 -0
  182. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/readme.md +0 -0
  183. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/simple_interface.cpp +0 -0
  184. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/simple_interface.h +0 -0
  185. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/tcp_client.cpp +0 -0
  186. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/tcp_client.h +0 -0
  187. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/tcp_operations.h +0 -0
  188. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/tcp_server.cpp +0 -0
  189. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/tcp_server.h +0 -0
  190. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/third_party/concurrentqueue.h +0 -0
  191. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/timed_queue.h +0 -0
  192. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/timestamp.h +0 -0
  193. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/typedefs.h +0 -0
  194. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/utils.h +0 -0
  195. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/io/ymq/ymq.py +0 -0
  196. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/CMakeLists.txt +0 -0
  197. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/__init__.py +0 -0
  198. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/constants.h +0 -0
  199. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/defs.h +0 -0
  200. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/io_helper.cpp +0 -0
  201. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/io_helper.h +0 -0
  202. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/message.cpp +0 -0
  203. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/message.h +0 -0
  204. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/object_manager.cpp +0 -0
  205. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/object_storage/object_manager.h +0 -0
  206. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/__init__.py +0 -0
  207. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/__init__.py +0 -0
  208. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/_python.py +0 -0
  209. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/common.capnp +0 -0
  210. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/message.capnp +0 -0
  211. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/object_storage.capnp +0 -0
  212. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/capnp/status.capnp +0 -0
  213. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/introduction.md +0 -0
  214. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/__init__.py +0 -0
  215. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/common.py +0 -0
  216. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/message.py +0 -0
  217. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/mixins.py +0 -0
  218. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/object_storage.py +0 -0
  219. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/python/status.py +0 -0
  220. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/protocol/worker.md +0 -0
  221. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/__init__.py +0 -0
  222. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/allocate_policy/__init__.py +0 -0
  223. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/allocate_policy/allocate_policy.py +0 -0
  224. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/allocate_policy/capability_allocate_policy.py +0 -0
  225. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/allocate_policy/even_load_allocate_policy.py +0 -0
  226. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/allocate_policy/mixins.py +0 -0
  227. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/__init__.py +0 -0
  228. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/balance_controller.py +0 -0
  229. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/client_controller.py +0 -0
  230. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/config_controller.py +0 -0
  231. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/graph_controller.py +0 -0
  232. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/information_controller.py +0 -0
  233. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/mixins.py +0 -0
  234. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/object_controller.py +0 -0
  235. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/scaling_controller.py +0 -0
  236. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/task_controller.py +0 -0
  237. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/controllers/worker_controller.py +0 -0
  238. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/object_usage/__init__.py +0 -0
  239. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/object_usage/object_tracker.py +0 -0
  240. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/scheduler.py +0 -0
  241. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/task/__init__.py +0 -0
  242. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/task/task_state_machine.py +0 -0
  243. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/scheduler/task/task_state_manager.py +0 -0
  244. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/__init__.py +0 -0
  245. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/constants.py +0 -0
  246. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/live_display.py +0 -0
  247. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/memory_window.py +0 -0
  248. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/setting_page.py +0 -0
  249. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/task_graph.py +0 -0
  250. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/task_log.py +0 -0
  251. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/utility.py +0 -0
  252. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/webui.py +0 -0
  253. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/ui/worker_processors.py +0 -0
  254. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/__init__.py +0 -0
  255. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/debug.py +0 -0
  256. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/event_list.py +0 -0
  257. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/event_loop.py +0 -0
  258. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/exceptions.py +0 -0
  259. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/formatter.py +0 -0
  260. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/graph/__init__.py +0 -0
  261. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/graph/optimization.py +0 -0
  262. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/graph/topological_sorter.py +0 -0
  263. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/graph/topological_sorter_graphblas.py +0 -0
  264. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/identifiers.py +0 -0
  265. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/logging/__init__.py +0 -0
  266. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/logging/decorators.py +0 -0
  267. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/logging/scoped_logger.py +0 -0
  268. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/logging/utility.py +0 -0
  269. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/many_to_many_dict.py +0 -0
  270. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/metadata/__init__.py +0 -0
  271. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/metadata/profile_result.py +0 -0
  272. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/metadata/task_flags.py +0 -0
  273. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/mixins.py +0 -0
  274. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/network_util.py +0 -0
  275. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/one_to_many_dict.py +0 -0
  276. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/queues/__init__.py +0 -0
  277. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/queues/async_indexed_queue.py +0 -0
  278. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/queues/async_priority_queue.py +0 -0
  279. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/queues/async_sorted_priority_queue.py +0 -0
  280. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/queues/indexed_queue.py +0 -0
  281. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/utility/serialization.py +0 -0
  282. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/__init__.py +0 -0
  283. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/__init__.py +0 -0
  284. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/heartbeat_manager.py +0 -0
  285. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/mixins.py +0 -0
  286. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor/__init__.py +0 -0
  287. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor/object_cache.py +0 -0
  288. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor/processor.py +0 -0
  289. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor/streaming_buffer.py +0 -0
  290. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor_holder.py +0 -0
  291. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/processor_manager.py +0 -0
  292. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/profiling_manager.py +0 -0
  293. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/task_manager.py +0 -0
  294. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/agent/timeout_manager.py +0 -0
  295. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/preload.py +0 -0
  296. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker/worker.py +0 -0
  297. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/__init__.py +0 -0
  298. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/native.py +0 -0
  299. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/__init__.py +0 -0
  300. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/callback.py +0 -0
  301. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/heartbeat_manager.py +0 -0
  302. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/message.py +0 -0
  303. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/task_manager.py +0 -0
  304. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/worker.py +0 -0
  305. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scaler/worker_adapter/symphony/worker_adapter.py +0 -0
  306. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scripts/build.sh +0 -0
  307. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scripts/library_tool.ps1 +0 -0
  308. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scripts/library_tool.sh +0 -0
  309. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/scripts/test.sh +0 -0
  310. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/slides/Effortless Distributed Computing in Python - FOSDEM 2025.pdf +0 -0
  311. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/slides/OSFF 2025 London.pdf +0 -0
  312. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/CMakeLists.txt +0 -0
  313. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/__init__.py +0 -0
  314. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/CMakeLists.txt +0 -0
  315. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/object_storage/CMakeLists.txt +0 -0
  316. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/object_storage/test_object_manager.cpp +0 -0
  317. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/object_storage/test_object_storage_server.cpp +0 -0
  318. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/CMakeLists.txt +0 -0
  319. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/common.h +0 -0
  320. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/__init__.py +0 -0
  321. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/main.py +0 -0
  322. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/passthrough.py +0 -0
  323. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/randomly_drop_packets.py +0 -0
  324. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/send_rst_to_client.py +0 -0
  325. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/py_mitm/types.py +0 -0
  326. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/cpp/ymq/test_ymq.cpp +0 -0
  327. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/io/ymq/CMakeLists.txt +0 -0
  328. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/io/ymq/test_logging.cpp +0 -0
  329. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_async_indexed_queue.py +0 -0
  330. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_async_priority_queue.py +0 -0
  331. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_async_sorted_priority_queue.py +0 -0
  332. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_balance.py +0 -0
  333. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_capabilities.py +0 -0
  334. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_capability_allocate_policy.py +0 -0
  335. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_client.py +0 -0
  336. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_cluster.py +0 -0
  337. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_cluster_disconnect.py +0 -0
  338. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_death_timeout.py +0 -0
  339. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_future.py +0 -0
  340. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_graph.py +0 -0
  341. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_indexed_queue.py +0 -0
  342. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_nested_task.py +0 -0
  343. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_object_usage.py +0 -0
  344. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_profiling.py +0 -0
  345. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_protected.py +0 -0
  346. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_scaling.py +0 -0
  347. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_serializer.py +0 -0
  348. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/test_ui.py +0 -0
  349. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/tests/utility.py +0 -0
  350. {opengris_scaler-1.12.8 → opengris_scaler-1.12.9}/version.h.in +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: opengris-scaler
3
- Version: 1.12.8
3
+ Version: 1.12.9
4
4
  Summary: OpenGRIS Scaler Distribution Framework
5
5
  Author-Email: Citi <opensource@citi.com>
6
6
  License: Apache 2.0
@@ -29,7 +29,8 @@ void ObjectStorageServer::run(
29
29
  ObjectStorageServer::Identity identity,
30
30
  std::string log_level,
31
31
  std::string log_format,
32
- std::vector<std::string> log_paths)
32
+ std::vector<std::string> log_paths,
33
+ std::function<bool()> running)
33
34
  {
34
35
  _logger = scaler::ymq::Logger(log_format, std::move(log_paths), scaler::ymq::Logger::stringToLogLevel(log_level));
35
36
 
@@ -44,7 +45,7 @@ void ObjectStorageServer::run(
44
45
 
45
46
  _logger.log(scaler::ymq::Logger::LoggingLevel::info, "ObjectStorageServer: started");
46
47
 
47
- processRequests();
48
+ processRequests(running);
48
49
 
49
50
  _ioContext.removeIOSocket(_ioSocket);
50
51
  } catch (const std::exception& e) {
@@ -117,7 +118,7 @@ void ObjectStorageServer::closeServerReadyFds()
117
118
  }
118
119
  }
119
120
 
120
- void ObjectStorageServer::processRequests()
121
+ void ObjectStorageServer::processRequests(std::function<bool()> running)
121
122
  {
122
123
  using namespace std::chrono_literals;
123
124
  Identity lastMessageIdentity;
@@ -134,7 +135,13 @@ void ObjectStorageServer::processRequests()
134
135
  }
135
136
  });
136
137
 
137
- auto maybeMessage = ymq::syncRecvMessage(_ioSocket);
138
+ auto maybeMessageFuture = ymq::futureRecvMessage(_ioSocket);
139
+ while (maybeMessageFuture.wait_for(100ms) == std::future_status::timeout) {
140
+ if (!running()) {
141
+ return;
142
+ }
143
+ }
144
+ auto maybeMessage = maybeMessageFuture.get();
138
145
 
139
146
  if (!maybeMessage) {
140
147
  auto error = maybeMessage.error();
@@ -35,7 +35,8 @@ public:
35
35
  Identity identity = "ObjectStorageServer",
36
36
  std::string log_level = "INFO",
37
37
  std::string log_format = "%(levelname)s: %(message)s",
38
- std::vector<std::string> log_paths = {"/dev/stdout"});
38
+ std::vector<std::string> log_paths = {"/dev/stdout"},
39
+ std::function<bool()> running = []() { return true; });
39
40
 
40
41
  void waitUntilReady();
41
42
 
@@ -78,7 +79,7 @@ private:
78
79
 
79
80
  void closeServerReadyFds();
80
81
 
81
- void processRequests();
82
+ void processRequests(std::function<bool()> stopCondition);
82
83
 
83
84
  void processSetRequest(std::shared_ptr<Client> client, std::pair<ObjectRequestHeader, Bytes> request);
84
85
 
@@ -1,6 +1,8 @@
1
1
  #define PY_SSIZE_T_CLEAN
2
2
  #include <Python.h>
3
+ #include <pyerrors.h>
3
4
 
5
+ #include "scaler/io/ymq/pymod_ymq/gil.h"
4
6
  #include "scaler/object_storage/object_storage_server.h"
5
7
 
6
8
  extern "C" {
@@ -52,10 +54,19 @@ static PyObject* PyObjectStorageServerRun(PyObject* self, PyObject* args)
52
54
  logging_paths.push_back(PyUnicode_AsUTF8(path_obj));
53
55
  }
54
56
 
57
+ auto running = []() -> bool {
58
+ AcquireGIL gil;
59
+ (void)gil;
60
+ return PyErr_CheckSignals() == 0;
61
+ };
62
+
55
63
  ((PyObjectStorageServer*)self)
56
- ->server.run(addr, std::to_string(port), identity, log_level, log_format, std::move(logging_paths));
64
+ ->server.run(
65
+ addr, std::to_string(port), identity, log_level, log_format, std::move(logging_paths), std::move(running));
57
66
 
58
- Py_RETURN_NONE;
67
+ // TODO: Ideally, run should return a bool and we return failure with nullptr.
68
+ return nullptr;
69
+ // Py_RETURN_NONE;
59
70
  }
60
71
 
61
72
  static PyObject* PyObjectStorageServerWaitUntilReady(PyObject* self, [[maybe_unused]] PyObject* args)
@@ -0,0 +1 @@
1
+ 1.12.9
@@ -0,0 +1,49 @@
1
+ import os
2
+ import tempfile
3
+ import unittest
4
+ from argparse import Namespace
5
+
6
+ from scaler.config.loader import load_config
7
+ from scaler.config.section.cluster import ClusterConfig
8
+
9
+
10
+ class TestClusterConfig(unittest.TestCase):
11
+ """Tests for the ClusterConfig class."""
12
+
13
+ def setUp(self):
14
+ self.temp_dir = tempfile.TemporaryDirectory()
15
+ self.config_path = os.path.join(self.temp_dir.name, "cluster.toml")
16
+ with open(self.config_path, "w") as f:
17
+ f.write(
18
+ """
19
+ scheduler_address = "tcp://127.0.0.1:5555"
20
+ num_of_workers = 2
21
+ worker_names = "w1,w2"
22
+ """
23
+ )
24
+
25
+ def tearDown(self):
26
+ self.temp_dir.cleanup()
27
+
28
+ def test_load_from_toml_only(self):
29
+ """Test loading ClusterConfig from a flat TOML file."""
30
+ config = load_config(ClusterConfig, self.config_path, Namespace())
31
+ self.assertEqual(str(config.scheduler_address), "tcp://127.0.0.1:5555")
32
+ self.assertEqual(config.num_of_workers, 2)
33
+ self.assertEqual(config.worker_names.names, ["w1", "w2"])
34
+
35
+ def test_command_line_overrides_toml(self):
36
+ """Test that argparse args correctly override TOML values for ClusterConfig."""
37
+ worker_list = [f"worker_{i}" for i in range(20)]
38
+ args = Namespace(num_of_workers=20, worker_names=",".join(worker_list), heartbeat_interval_seconds=99)
39
+
40
+ config = load_config(ClusterConfig, self.config_path, args)
41
+
42
+ self.assertEqual(config.num_of_workers, 20)
43
+ self.assertEqual(config.worker_names.names, worker_list)
44
+ self.assertEqual(config.heartbeat_interval_seconds, 99)
45
+ self.assertEqual(str(config.scheduler_address), "tcp://127.0.0.1:5555")
46
+
47
+
48
+ if __name__ == "__main__":
49
+ unittest.main()
@@ -0,0 +1,50 @@
1
+ import unittest
2
+
3
+ from scaler.config.types.worker import WorkerCapabilities, WorkerNames
4
+ from scaler.config.types.zmq import ZMQConfig
5
+
6
+
7
+ class TestConfigTypes(unittest.TestCase):
8
+ """Tests for individual ConfigType helper classes."""
9
+
10
+ def test_zmq_config_validation(self):
11
+ """Test ZMQConfig.from_string raises ValueError for malformed strings."""
12
+ with self.assertRaises(ValueError):
13
+ ZMQConfig.from_string("this-is-not-a-valid-address")
14
+ with self.assertRaises(ValueError):
15
+ ZMQConfig.from_string("tcp://127.0.0.1")
16
+ with self.assertRaises(ValueError):
17
+ ZMQConfig.from_string("badprotocol://127.0.0.1:1234")
18
+
19
+ cfg = ZMQConfig.from_string("ipc://a-valid-path")
20
+ self.assertEqual(cfg.host, "a-valid-path")
21
+
22
+ def test_worker_names_config_value(self):
23
+ """Test the WorkerNames ConfigType class."""
24
+ wn = WorkerNames.from_string(" worker1 , worker2 ")
25
+ self.assertEqual(wn.names, ["worker1", "worker2"])
26
+ self.assertEqual(str(wn), "worker1,worker2")
27
+ self.assertEqual(len(wn), 2)
28
+ wn_empty = WorkerNames.from_string("")
29
+ self.assertEqual(wn_empty.names, [])
30
+
31
+ def test_worker_capabilities_config_value(self):
32
+ """Test the WorkerCapabilities ConfigType class."""
33
+ wc = WorkerCapabilities.from_string(" gpu=2, linux ")
34
+ self.assertEqual(wc.capabilities, {"gpu": 2, "linux": -1})
35
+ self.assertIn("gpu=2", str(wc))
36
+ self.assertIn("linux", str(wc))
37
+
38
+ def test_worker_capabilities_invalid_input(self):
39
+ """Test that WorkerCapabilities raises an error for non-integer values."""
40
+ with self.assertRaises(ValueError):
41
+ WorkerCapabilities.from_string("gpu=two")
42
+
43
+ def test_worker_capabilities_invalid_value_in_string(self):
44
+ """Test that WorkerCapabilities.from_string raises a helpful ValueError for non-integer values."""
45
+ with self.assertRaisesRegex(ValueError, "Expected an integer, but got 'MostPowerful'"):
46
+ WorkerCapabilities.from_string("linux,cpu=MostPowerful")
47
+
48
+
49
+ if __name__ == "__main__":
50
+ unittest.main()
@@ -3,58 +3,13 @@ import tempfile
3
3
  import unittest
4
4
  from argparse import Namespace
5
5
 
6
- from scaler.config.section.cluster import ClusterConfig
6
+ from scaler.config import defaults
7
7
  from scaler.config.loader import load_config
8
8
  from scaler.config.section.scheduler import SchedulerConfig
9
9
  from scaler.config.types.object_storage_server import ObjectStorageConfig
10
- from scaler.config.types.worker import WorkerCapabilities, WorkerNames
11
- from scaler.config.types.zmq import ZMQConfig
12
- from scaler.config import defaults
13
10
  from scaler.scheduler.allocate_policy.allocate_policy import AllocatePolicy
14
11
 
15
12
 
16
- class TestConfigTypes(unittest.TestCase):
17
- """Tests for individual ConfigType helper classes."""
18
-
19
- def test_zmq_config_validation(self):
20
- """Test ZMQConfig.from_string raises ValueError for malformed strings."""
21
- with self.assertRaises(ValueError):
22
- ZMQConfig.from_string("this-is-not-a-valid-address")
23
- with self.assertRaises(ValueError):
24
- ZMQConfig.from_string("tcp://127.0.0.1")
25
- with self.assertRaises(ValueError):
26
- ZMQConfig.from_string("badprotocol://127.0.0.1:1234")
27
-
28
- cfg = ZMQConfig.from_string("ipc://a-valid-path")
29
- self.assertEqual(cfg.host, "a-valid-path")
30
-
31
- def test_worker_names_config_value(self):
32
- """Test the WorkerNames ConfigType class."""
33
- wn = WorkerNames.from_string(" worker1 , worker2 ")
34
- self.assertEqual(wn.names, ["worker1", "worker2"])
35
- self.assertEqual(str(wn), "worker1,worker2")
36
- self.assertEqual(len(wn), 2)
37
- wn_empty = WorkerNames.from_string("")
38
- self.assertEqual(wn_empty.names, [])
39
-
40
- def test_worker_capabilities_config_value(self):
41
- """Test the WorkerCapabilities ConfigType class."""
42
- wc = WorkerCapabilities.from_string(" gpu=2, linux ")
43
- self.assertEqual(wc.capabilities, {"gpu": 2, "linux": -1})
44
- self.assertIn("gpu=2", str(wc))
45
- self.assertIn("linux", str(wc))
46
-
47
- def test_worker_capabilities_invalid_input(self):
48
- """Test that WorkerCapabilities raises an error for non-integer values."""
49
- with self.assertRaises(ValueError):
50
- WorkerCapabilities.from_string("gpu=two")
51
-
52
- def test_worker_capabilities_invalid_value_in_string(self):
53
- """Test that WorkerCapabilities.from_string raises a helpful ValueError for non-integer values."""
54
- with self.assertRaisesRegex(ValueError, "Expected an integer, but got 'MostPowerful'"):
55
- WorkerCapabilities.from_string("linux,cpu=MostPowerful")
56
-
57
-
58
13
  class TestSchedulerConfig(unittest.TestCase):
59
14
  """Tests for the SchedulerConfig class."""
60
15
 
@@ -136,44 +91,5 @@ allocate_policy = "even"
136
91
  self.assertEqual(config.logging_paths, ("/var/log/scaler.log", "/dev/stdout"))
137
92
 
138
93
 
139
- class TestClusterConfig(unittest.TestCase):
140
- """Tests for the ClusterConfig class."""
141
-
142
- def setUp(self):
143
- self.temp_dir = tempfile.TemporaryDirectory()
144
- self.config_path = os.path.join(self.temp_dir.name, "cluster.toml")
145
- with open(self.config_path, "w") as f:
146
- f.write(
147
- """
148
- scheduler_address = "tcp://127.0.0.1:5555"
149
- # FIX: Changed num_of_workers to match the number of worker_names
150
- num_of_workers = 2
151
- worker_names = "w1,w2"
152
- """
153
- )
154
-
155
- def tearDown(self):
156
- self.temp_dir.cleanup()
157
-
158
- def test_load_from_toml_only(self):
159
- """Test loading ClusterConfig from a flat TOML file."""
160
- config = load_config(ClusterConfig, self.config_path, Namespace())
161
- self.assertEqual(str(config.scheduler_address), "tcp://127.0.0.1:5555")
162
- self.assertEqual(config.num_of_workers, 2)
163
- self.assertEqual(config.worker_names.names, ["w1", "w2"])
164
-
165
- def test_command_line_overrides_toml(self):
166
- """Test that argparse args correctly override TOML values for ClusterConfig."""
167
- worker_list = [f"worker_{i}" for i in range(20)]
168
- args = Namespace(num_of_workers=20, worker_names=",".join(worker_list), heartbeat_interval_seconds=99)
169
-
170
- config = load_config(ClusterConfig, self.config_path, args)
171
-
172
- self.assertEqual(config.num_of_workers, 20)
173
- self.assertEqual(config.worker_names.names, worker_list)
174
- self.assertEqual(config.heartbeat_interval_seconds, 99)
175
- self.assertEqual(str(config.scheduler_address), "tcp://127.0.0.1:5555")
176
-
177
-
178
94
  if __name__ == "__main__":
179
95
  unittest.main()
@@ -1 +0,0 @@
1
- 1.12.8