diff --git a/Apache-Arrow-Flight-Tester/protobuf/protocol.proto b/Apache-Arrow-Flight-Tester/protobuf/protocol.proto index 58462ce..8f7dbd6 100644 --- a/Apache-Arrow-Flight-Tester/protobuf/protocol.proto +++ b/Apache-Arrow-Flight-Tester/protobuf/protocol.proto @@ -52,8 +52,8 @@ message TableMetadata { // Configuration of a ModelarDB node. message Configuration { - // Amount of memory to reserve for storing multivariate time series. - uint64 multivariate_reserved_memory_in_bytes = 1; + // Amount of memory to reserve for storing ingested time series. + uint64 ingested_reserved_memory_in_bytes = 1; // Amount of memory to reserve for storing uncompressed data buffers. uint64 uncompressed_reserved_memory_in_bytes = 2; @@ -61,37 +61,45 @@ message Configuration { // Amount of memory to reserve for storing compressed data buffers. uint64 compressed_reserved_memory_in_bytes = 3; - // The number of bytes that are required before transferring a batch of data to the remote object store. + // The number of bytes that are required before transferring a batch of data to the remote object store. If not set, + // data is only transferred on an explicit flush. optional uint64 transfer_batch_size_in_bytes = 4; - // The number of seconds between each transfer of data to the remote object store. - optional uint64 transfer_time_in_seconds = 5; - // The approximate maximum size, in bytes, of a single WAL segment file before it is closed and a new one is started. - uint64 segment_size_threshold_in_bytes = 6; + uint64 segment_size_threshold_in_bytes = 5; // Number of threads to allocate for converting multivariate time series to univariate time series. - uint32 ingestion_threads = 7; + uint32 ingestion_threads = 6; // Number of threads to allocate for compressing univariate time series to segments. - uint32 compression_threads = 8; + uint32 compression_threads = 7; // Number of threads to allocate for writing segments to a local and/or remote data folder. - uint32 writer_threads = 9; + uint32 writer_threads = 8; // Whether the write-ahead log is enabled. - bool wal_enabled = 10; + bool wal_enabled = 9; + + // Target size, in bytes, of the files produced when automatically compacting a table's storage. This is also the + // default value used when an OPTIMIZE query is executed without an explicit target size. + uint64 optimize_target_file_size_in_bytes = 10; + + // Retention period, in seconds, used when automatically vacuuming a table during compaction. This is also the + // default value used when a VACUUM query is executed without an explicit retention period. Note that a very low + // value can delete files an in-progress query is still scanning. + uint64 vacuum_retention_period_in_seconds = 11; } // Request to update the configuration of a ModelarDB node. message UpdateConfiguration { enum Setting { - MULTIVARIATE_RESERVED_MEMORY_IN_BYTES = 0; + INGESTED_RESERVED_MEMORY_IN_BYTES = 0; UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES = 1; COMPRESSED_RESERVED_MEMORY_IN_BYTES = 2; TRANSFER_BATCH_SIZE_IN_BYTES = 3; - TRANSFER_TIME_IN_SECONDS = 4; - SEGMENT_SIZE_THRESHOLD_IN_BYTES = 5; + SEGMENT_SIZE_THRESHOLD_IN_BYTES = 4; + OPTIMIZE_TARGET_FILE_SIZE_IN_BYTES = 5; + VACUUM_RETENTION_PERIOD_IN_SECONDS = 6; } // Setting to update in the configuration. @@ -100,3 +108,56 @@ message UpdateConfiguration { // New value for the setting. optional uint64 new_value = 2; } + +// Metadata identifying a single node in a ModelarDB cluster. +message NodeMetadata { + // Apache Arrow Flight URL that uniquely identifies the node. + string url = 1; + + // Mode the node was started in, either "edge" or "cloud". + string mode = 2; +} + +// The nodes that are currently part of a ModelarDB cluster. +message ClusterNodes { + repeated NodeMetadata nodes = 1; +} + +// Resource usage metrics for a single ModelarDB node. +message NodeMetrics { + // Percentage of the CPU that is currently in use across all cores. + double cpu_usage_percentage = 1; + + // Number of logical CPUs available to the node. + uint32 cpu_count = 2; + + // Amount of memory currently in use on the node. + uint64 used_memory_in_bytes = 3; + + // Total amount of memory on the node. + uint64 total_memory_in_bytes = 4; + + // Amount of disk space currently in use on the disk holding the local data folder. + uint64 used_disk_space_in_bytes = 5; + + // Total amount of disk space on the disk holding the local data folder. + uint64 total_disk_space_in_bytes = 6; + + // Amount of memory currently in use for storing ingested time series. + uint64 ingested_used_memory_in_bytes = 7; + + // Total amount of memory reserved for storing ingested time series. + uint64 ingested_reserved_memory_in_bytes = 8; + + // Amount of memory currently in use for storing uncompressed data buffers. + uint64 uncompressed_used_memory_in_bytes = 9; + + // Total amount of memory reserved for storing uncompressed data buffers. + uint64 uncompressed_reserved_memory_in_bytes = 10; + + // Amount of memory currently in use for storing compressed data buffers. + uint64 compressed_used_memory_in_bytes = 11; + + // Total amount of memory reserved for storing compressed data buffers. + uint64 compressed_reserved_memory_in_bytes = 12; +} diff --git a/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.py b/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.py index 6aaa638..512ee37 100644 --- a/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.py +++ b/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.py @@ -2,7 +2,7 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # NO CHECKED-IN PROTOBUF GENCODE # source: protocol.proto -# Protobuf Python Version: 6.31.0 +# Protobuf Python Version: 7.35.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -11,9 +11,9 @@ from google.protobuf.internal import builder as _builder _runtime_version.ValidateProtobufRuntimeVersion( _runtime_version.Domain.PUBLIC, - 6, - 31, - 0, + 7, + 35, + 1, '', 'protocol.proto' ) @@ -24,7 +24,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0eprotocol.proto\x12\x19modelardb.flight.protocol\"\xfe\x04\n\rTableMetadata\x12T\n\x0cnormal_table\x18\x01 \x01(\x0b\x32<.modelardb.flight.protocol.TableMetadata.NormalTableMetadataH\x00\x12]\n\x11time_series_table\x18\x02 \x01(\x0b\x32@.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadataH\x00\x1a\x33\n\x13NormalTableMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\x0c\x1a\xf0\x02\n\x17TimeSeriesTableMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\x0c\x12\x61\n\x0c\x65rror_bounds\x18\x03 \x03(\x0b\x32K.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadata.ErrorBound\x12$\n\x1cgenerated_column_expressions\x18\x04 \x03(\x0c\x1a\xad\x01\n\nErrorBound\x12^\n\x04type\x18\x01 \x01(\x0e\x32P.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadata.ErrorBound.Type\x12\r\n\x05value\x18\x02 \x01(\x02\"0\n\x04Type\x12\x0c\n\x08\x41\x42SOLUTE\x10\x00\x12\x0c\n\x08RELATIVE\x10\x01\x12\x0c\n\x08LOSSLESS\x10\x02\x42\x10\n\x0etable_metadata\"\xb8\x03\n\rConfiguration\x12-\n%multivariate_reserved_memory_in_bytes\x18\x01 \x01(\x04\x12-\n%uncompressed_reserved_memory_in_bytes\x18\x02 \x01(\x04\x12+\n#compressed_reserved_memory_in_bytes\x18\x03 \x01(\x04\x12)\n\x1ctransfer_batch_size_in_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12%\n\x18transfer_time_in_seconds\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\'\n\x1fsegment_size_threshold_in_bytes\x18\x06 \x01(\x04\x12\x19\n\x11ingestion_threads\x18\x07 \x01(\r\x12\x1b\n\x13\x63ompression_threads\x18\x08 \x01(\r\x12\x16\n\x0ewriter_threads\x18\t \x01(\r\x12\x13\n\x0bwal_enabled\x18\n \x01(\x08\x42\x1f\n\x1d_transfer_batch_size_in_bytesB\x1b\n\x19_transfer_time_in_seconds\"\xf4\x02\n\x13UpdateConfiguration\x12G\n\x07setting\x18\x01 \x01(\x0e\x32\x36.modelardb.flight.protocol.UpdateConfiguration.Setting\x12\x16\n\tnew_value\x18\x02 \x01(\x04H\x00\x88\x01\x01\"\xed\x01\n\x07Setting\x12)\n%MULTIVARIATE_RESERVED_MEMORY_IN_BYTES\x10\x00\x12)\n%UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES\x10\x01\x12\'\n#COMPRESSED_RESERVED_MEMORY_IN_BYTES\x10\x02\x12 \n\x1cTRANSFER_BATCH_SIZE_IN_BYTES\x10\x03\x12\x1c\n\x18TRANSFER_TIME_IN_SECONDS\x10\x04\x12#\n\x1fSEGMENT_SIZE_THRESHOLD_IN_BYTES\x10\x05\x42\x0c\n\n_new_valueb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0eprotocol.proto\x12\x19modelardb.flight.protocol\"\xfe\x04\n\rTableMetadata\x12T\n\x0cnormal_table\x18\x01 \x01(\x0b\x32<.modelardb.flight.protocol.TableMetadata.NormalTableMetadataH\x00\x12]\n\x11time_series_table\x18\x02 \x01(\x0b\x32@.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadataH\x00\x1a\x33\n\x13NormalTableMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\x0c\x1a\xf0\x02\n\x17TimeSeriesTableMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\x0c\x12\x61\n\x0c\x65rror_bounds\x18\x03 \x03(\x0b\x32K.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadata.ErrorBound\x12$\n\x1cgenerated_column_expressions\x18\x04 \x03(\x0c\x1a\xad\x01\n\nErrorBound\x12^\n\x04type\x18\x01 \x01(\x0e\x32P.modelardb.flight.protocol.TableMetadata.TimeSeriesTableMetadata.ErrorBound.Type\x12\r\n\x05value\x18\x02 \x01(\x02\"0\n\x04Type\x12\x0c\n\x08\x41\x42SOLUTE\x10\x00\x12\x0c\n\x08RELATIVE\x10\x01\x12\x0c\n\x08LOSSLESS\x10\x02\x42\x10\n\x0etable_metadata\"\xc8\x03\n\rConfiguration\x12)\n!ingested_reserved_memory_in_bytes\x18\x01 \x01(\x04\x12-\n%uncompressed_reserved_memory_in_bytes\x18\x02 \x01(\x04\x12+\n#compressed_reserved_memory_in_bytes\x18\x03 \x01(\x04\x12)\n\x1ctransfer_batch_size_in_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\'\n\x1fsegment_size_threshold_in_bytes\x18\x05 \x01(\x04\x12\x19\n\x11ingestion_threads\x18\x06 \x01(\r\x12\x1b\n\x13\x63ompression_threads\x18\x07 \x01(\r\x12\x16\n\x0ewriter_threads\x18\x08 \x01(\r\x12\x13\n\x0bwal_enabled\x18\t \x01(\x08\x12*\n\"optimize_target_file_size_in_bytes\x18\n \x01(\x04\x12*\n\"vacuum_retention_period_in_seconds\x18\x0b \x01(\x04\x42\x1f\n\x1d_transfer_batch_size_in_bytes\"\xa2\x03\n\x13UpdateConfiguration\x12G\n\x07setting\x18\x01 \x01(\x0e\x32\x36.modelardb.flight.protocol.UpdateConfiguration.Setting\x12\x16\n\tnew_value\x18\x02 \x01(\x04H\x00\x88\x01\x01\"\x9b\x02\n\x07Setting\x12%\n!INGESTED_RESERVED_MEMORY_IN_BYTES\x10\x00\x12)\n%UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES\x10\x01\x12\'\n#COMPRESSED_RESERVED_MEMORY_IN_BYTES\x10\x02\x12 \n\x1cTRANSFER_BATCH_SIZE_IN_BYTES\x10\x03\x12#\n\x1fSEGMENT_SIZE_THRESHOLD_IN_BYTES\x10\x04\x12&\n\"OPTIMIZE_TARGET_FILE_SIZE_IN_BYTES\x10\x05\x12&\n\"VACUUM_RETENTION_PERIOD_IN_SECONDS\x10\x06\x42\x0c\n\n_new_value\")\n\x0cNodeMetadata\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0c\n\x04mode\x18\x02 \x01(\t\"F\n\x0c\x43lusterNodes\x12\x36\n\x05nodes\x18\x01 \x03(\x0b\x32\'.modelardb.flight.protocol.NodeMetadata\"\xc2\x03\n\x0bNodeMetrics\x12\x1c\n\x14\x63pu_usage_percentage\x18\x01 \x01(\x01\x12\x11\n\tcpu_count\x18\x02 \x01(\r\x12\x1c\n\x14used_memory_in_bytes\x18\x03 \x01(\x04\x12\x1d\n\x15total_memory_in_bytes\x18\x04 \x01(\x04\x12 \n\x18used_disk_space_in_bytes\x18\x05 \x01(\x04\x12!\n\x19total_disk_space_in_bytes\x18\x06 \x01(\x04\x12%\n\x1dingested_used_memory_in_bytes\x18\x07 \x01(\x04\x12)\n!ingested_reserved_memory_in_bytes\x18\x08 \x01(\x04\x12)\n!uncompressed_used_memory_in_bytes\x18\t \x01(\x04\x12-\n%uncompressed_reserved_memory_in_bytes\x18\n \x01(\x04\x12\'\n\x1f\x63ompressed_used_memory_in_bytes\x18\x0b \x01(\x04\x12+\n#compressed_reserved_memory_in_bytes\x18\x0c \x01(\x04\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,9 +42,15 @@ _globals['_TABLEMETADATA_TIMESERIESTABLEMETADATA_ERRORBOUND_TYPE']._serialized_start=618 _globals['_TABLEMETADATA_TIMESERIESTABLEMETADATA_ERRORBOUND_TYPE']._serialized_end=666 _globals['_CONFIGURATION']._serialized_start=687 - _globals['_CONFIGURATION']._serialized_end=1127 - _globals['_UPDATECONFIGURATION']._serialized_start=1130 - _globals['_UPDATECONFIGURATION']._serialized_end=1502 - _globals['_UPDATECONFIGURATION_SETTING']._serialized_start=1251 - _globals['_UPDATECONFIGURATION_SETTING']._serialized_end=1488 + _globals['_CONFIGURATION']._serialized_end=1143 + _globals['_UPDATECONFIGURATION']._serialized_start=1146 + _globals['_UPDATECONFIGURATION']._serialized_end=1564 + _globals['_UPDATECONFIGURATION_SETTING']._serialized_start=1267 + _globals['_UPDATECONFIGURATION_SETTING']._serialized_end=1550 + _globals['_NODEMETADATA']._serialized_start=1566 + _globals['_NODEMETADATA']._serialized_end=1607 + _globals['_CLUSTERNODES']._serialized_start=1609 + _globals['_CLUSTERNODES']._serialized_end=1679 + _globals['_NODEMETRICS']._serialized_start=1682 + _globals['_NODEMETRICS']._serialized_end=2132 # @@protoc_insertion_point(module_scope) diff --git a/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.pyi b/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.pyi index 5a61d93..e752318 100644 --- a/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.pyi +++ b/Apache-Arrow-Flight-Tester/protobuf/protocol_pb2.pyi @@ -49,47 +49,93 @@ class TableMetadata(_message.Message): def __init__(self, normal_table: _Optional[_Union[TableMetadata.NormalTableMetadata, _Mapping]] = ..., time_series_table: _Optional[_Union[TableMetadata.TimeSeriesTableMetadata, _Mapping]] = ...) -> None: ... class Configuration(_message.Message): - __slots__ = ("multivariate_reserved_memory_in_bytes", "uncompressed_reserved_memory_in_bytes", "compressed_reserved_memory_in_bytes", "transfer_batch_size_in_bytes", "transfer_time_in_seconds", "segment_size_threshold_in_bytes", "ingestion_threads", "compression_threads", "writer_threads", "wal_enabled") - MULTIVARIATE_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("ingested_reserved_memory_in_bytes", "uncompressed_reserved_memory_in_bytes", "compressed_reserved_memory_in_bytes", "transfer_batch_size_in_bytes", "segment_size_threshold_in_bytes", "ingestion_threads", "compression_threads", "writer_threads", "wal_enabled", "optimize_target_file_size_in_bytes", "vacuum_retention_period_in_seconds") + INGESTED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] COMPRESSED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] TRANSFER_BATCH_SIZE_IN_BYTES_FIELD_NUMBER: _ClassVar[int] - TRANSFER_TIME_IN_SECONDS_FIELD_NUMBER: _ClassVar[int] SEGMENT_SIZE_THRESHOLD_IN_BYTES_FIELD_NUMBER: _ClassVar[int] INGESTION_THREADS_FIELD_NUMBER: _ClassVar[int] COMPRESSION_THREADS_FIELD_NUMBER: _ClassVar[int] WRITER_THREADS_FIELD_NUMBER: _ClassVar[int] WAL_ENABLED_FIELD_NUMBER: _ClassVar[int] - multivariate_reserved_memory_in_bytes: int + OPTIMIZE_TARGET_FILE_SIZE_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + VACUUM_RETENTION_PERIOD_IN_SECONDS_FIELD_NUMBER: _ClassVar[int] + ingested_reserved_memory_in_bytes: int uncompressed_reserved_memory_in_bytes: int compressed_reserved_memory_in_bytes: int transfer_batch_size_in_bytes: int - transfer_time_in_seconds: int segment_size_threshold_in_bytes: int ingestion_threads: int compression_threads: int writer_threads: int wal_enabled: bool - def __init__(self, multivariate_reserved_memory_in_bytes: _Optional[int] = ..., uncompressed_reserved_memory_in_bytes: _Optional[int] = ..., compressed_reserved_memory_in_bytes: _Optional[int] = ..., transfer_batch_size_in_bytes: _Optional[int] = ..., transfer_time_in_seconds: _Optional[int] = ..., segment_size_threshold_in_bytes: _Optional[int] = ..., ingestion_threads: _Optional[int] = ..., compression_threads: _Optional[int] = ..., writer_threads: _Optional[int] = ..., wal_enabled: bool = ...) -> None: ... + optimize_target_file_size_in_bytes: int + vacuum_retention_period_in_seconds: int + def __init__(self, ingested_reserved_memory_in_bytes: _Optional[int] = ..., uncompressed_reserved_memory_in_bytes: _Optional[int] = ..., compressed_reserved_memory_in_bytes: _Optional[int] = ..., transfer_batch_size_in_bytes: _Optional[int] = ..., segment_size_threshold_in_bytes: _Optional[int] = ..., ingestion_threads: _Optional[int] = ..., compression_threads: _Optional[int] = ..., writer_threads: _Optional[int] = ..., wal_enabled: _Optional[bool] = ..., optimize_target_file_size_in_bytes: _Optional[int] = ..., vacuum_retention_period_in_seconds: _Optional[int] = ...) -> None: ... class UpdateConfiguration(_message.Message): __slots__ = ("setting", "new_value") class Setting(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () - MULTIVARIATE_RESERVED_MEMORY_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] + INGESTED_RESERVED_MEMORY_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] COMPRESSED_RESERVED_MEMORY_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] TRANSFER_BATCH_SIZE_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] - TRANSFER_TIME_IN_SECONDS: _ClassVar[UpdateConfiguration.Setting] SEGMENT_SIZE_THRESHOLD_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] - MULTIVARIATE_RESERVED_MEMORY_IN_BYTES: UpdateConfiguration.Setting + OPTIMIZE_TARGET_FILE_SIZE_IN_BYTES: _ClassVar[UpdateConfiguration.Setting] + VACUUM_RETENTION_PERIOD_IN_SECONDS: _ClassVar[UpdateConfiguration.Setting] + INGESTED_RESERVED_MEMORY_IN_BYTES: UpdateConfiguration.Setting UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES: UpdateConfiguration.Setting COMPRESSED_RESERVED_MEMORY_IN_BYTES: UpdateConfiguration.Setting TRANSFER_BATCH_SIZE_IN_BYTES: UpdateConfiguration.Setting - TRANSFER_TIME_IN_SECONDS: UpdateConfiguration.Setting SEGMENT_SIZE_THRESHOLD_IN_BYTES: UpdateConfiguration.Setting + OPTIMIZE_TARGET_FILE_SIZE_IN_BYTES: UpdateConfiguration.Setting + VACUUM_RETENTION_PERIOD_IN_SECONDS: UpdateConfiguration.Setting SETTING_FIELD_NUMBER: _ClassVar[int] NEW_VALUE_FIELD_NUMBER: _ClassVar[int] setting: UpdateConfiguration.Setting new_value: int def __init__(self, setting: _Optional[_Union[UpdateConfiguration.Setting, str]] = ..., new_value: _Optional[int] = ...) -> None: ... + +class NodeMetadata(_message.Message): + __slots__ = ("url", "mode") + URL_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + url: str + mode: str + def __init__(self, url: _Optional[str] = ..., mode: _Optional[str] = ...) -> None: ... + +class ClusterNodes(_message.Message): + __slots__ = ("nodes",) + NODES_FIELD_NUMBER: _ClassVar[int] + nodes: _containers.RepeatedCompositeFieldContainer[NodeMetadata] + def __init__(self, nodes: _Optional[_Iterable[_Union[NodeMetadata, _Mapping]]] = ...) -> None: ... + +class NodeMetrics(_message.Message): + __slots__ = ("cpu_usage_percentage", "cpu_count", "used_memory_in_bytes", "total_memory_in_bytes", "used_disk_space_in_bytes", "total_disk_space_in_bytes", "ingested_used_memory_in_bytes", "ingested_reserved_memory_in_bytes", "uncompressed_used_memory_in_bytes", "uncompressed_reserved_memory_in_bytes", "compressed_used_memory_in_bytes", "compressed_reserved_memory_in_bytes") + CPU_USAGE_PERCENTAGE_FIELD_NUMBER: _ClassVar[int] + CPU_COUNT_FIELD_NUMBER: _ClassVar[int] + USED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + TOTAL_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + USED_DISK_SPACE_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + TOTAL_DISK_SPACE_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + INGESTED_USED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + INGESTED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + UNCOMPRESSED_USED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + UNCOMPRESSED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + COMPRESSED_USED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + COMPRESSED_RESERVED_MEMORY_IN_BYTES_FIELD_NUMBER: _ClassVar[int] + cpu_usage_percentage: float + cpu_count: int + used_memory_in_bytes: int + total_memory_in_bytes: int + used_disk_space_in_bytes: int + total_disk_space_in_bytes: int + ingested_used_memory_in_bytes: int + ingested_reserved_memory_in_bytes: int + uncompressed_used_memory_in_bytes: int + uncompressed_reserved_memory_in_bytes: int + compressed_used_memory_in_bytes: int + compressed_reserved_memory_in_bytes: int + def __init__(self, cpu_usage_percentage: _Optional[float] = ..., cpu_count: _Optional[int] = ..., used_memory_in_bytes: _Optional[int] = ..., total_memory_in_bytes: _Optional[int] = ..., used_disk_space_in_bytes: _Optional[int] = ..., total_disk_space_in_bytes: _Optional[int] = ..., ingested_used_memory_in_bytes: _Optional[int] = ..., ingested_reserved_memory_in_bytes: _Optional[int] = ..., uncompressed_used_memory_in_bytes: _Optional[int] = ..., uncompressed_reserved_memory_in_bytes: _Optional[int] = ..., compressed_used_memory_in_bytes: _Optional[int] = ..., compressed_reserved_memory_in_bytes: _Optional[int] = ...) -> None: ... diff --git a/Apache-Arrow-Flight-Tester/requirements.txt b/Apache-Arrow-Flight-Tester/requirements.txt index bd353fd..5d3da2d 100644 --- a/Apache-Arrow-Flight-Tester/requirements.txt +++ b/Apache-Arrow-Flight-Tester/requirements.txt @@ -1,7 +1,8 @@ -numpy==2.5.0 -pandas==3.0.4 -pyarrow==24.0.0 +numpy==2.5.2 +pandas==3.0.5 +pyarrow==25.0.1 python-dateutil==2.9.0.post0 -pytz==2026.2 +pytz==2026.3 +protobuf==7.35.1 six==1.17.0 -tzdata==2026.2 +tzdata==2026.3 diff --git a/Apache-Arrow-Flight-Tester/server.py b/Apache-Arrow-Flight-Tester/server.py index 438247f..b096940 100644 --- a/Apache-Arrow-Flight-Tester/server.py +++ b/Apache-Arrow-Flight-Tester/server.py @@ -111,6 +111,24 @@ def node_type(self) -> str: node_type = self.do_action("NodeType", b"") return node_type[0].body.to_pybytes().decode("utf-8") + def list_nodes(self) -> list[protocol_pb2.NodeMetadata]: + """Return the metadata of the nodes in the cluster.""" + response = self.do_action("ListNodes", b"") + + cluster_nodes = protocol_pb2.ClusterNodes() + cluster_nodes.ParseFromString(response[0].body.to_pybytes()) + + return [node for node in cluster_nodes.nodes] + + def node_metrics(self) -> protocol_pb2.NodeMetrics: + """Return the current metrics of the node.""" + response = self.do_action("NodeMetrics", b"") + + node_metrics = protocol_pb2.NodeMetrics() + node_metrics.ParseFromString(response[0].body.to_pybytes()) + + return node_metrics + if __name__ == "__main__": token = os.environ.get("MODELARDB_TOKEN")