From 240563b417f83b2b12aee90d1056ab9900fa740f Mon Sep 17 00:00:00 2001 From: Gaius Date: Tue, 18 Jun 2024 14:29:45 +0800 Subject: [PATCH] feat: add upload cache task for scheduler (#328) Signed-off-by: Gaius --- Cargo.lock | 2 +- Cargo.toml | 2 +- pkg/apis/dfdaemon/v2/dfdaemon.proto | 6 +- pkg/apis/scheduler/v2/scheduler.proto | 25 ++++++ proto/common.proto | 6 +- proto/dfdaemon.proto | 6 +- proto/scheduler.proto | 25 ++++++ src/common.v2.rs | 7 +- src/descriptor.bin | Bin 89815 -> 91554 bytes src/dfdaemon.v2.rs | 5 +- src/scheduler.v2.rs | 113 ++++++++++++++++++++++++++ 11 files changed, 186 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1b08d9..b437533 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.0.121" +version = "2.0.122" dependencies = [ "prost 0.11.9", "prost-types 0.12.6", diff --git a/Cargo.toml b/Cargo.toml index e3f6266..f316952 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.0.121" +version = "2.0.122" authors = ["Gaius "] edition = "2021" license = "Apache-2.0" diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.proto b/pkg/apis/dfdaemon/v2/dfdaemon.proto index 7fdd9b6..7a98d1a 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.proto +++ b/pkg/apis/dfdaemon/v2/dfdaemon.proto @@ -175,8 +175,10 @@ message UploadCacheTaskRequest { optional string application = 4; // Task piece length. uint64 piece_length = 5 [(validate.rules).uint64.gte = 1]; - // Download timeout. - optional google.protobuf.Duration timeout = 6; + // TTL of the cache task. + google.protobuf.Duration ttl = 6 [(validate.rules).duration = {gte.seconds: 60, lte.seconds: 604800}]; + // Upload timeout. + optional google.protobuf.Duration timeout = 7; } // StatCacheTaskRequest represents request of StatCacheTask. diff --git a/pkg/apis/scheduler/v2/scheduler.proto b/pkg/apis/scheduler/v2/scheduler.proto index 76ec6b2..4cd4434 100644 --- a/pkg/apis/scheduler/v2/scheduler.proto +++ b/pkg/apis/scheduler/v2/scheduler.proto @@ -373,6 +373,28 @@ message DeleteCachePeerRequest { string peer_id = 3 [(validate.rules).string.min_len = 1]; } +// UploadCacheTaskRequest represents request of UploadCacheTask. +message UploadCacheTaskRequest { + // Host id. + string host_id = 1 [(validate.rules).string.min_len = 1]; + // Task id. + string task_id = 2 [(validate.rules).string.min_len = 1]; + // Peer id. + string peer_id = 3 [(validate.rules).string.min_len = 1]; + // Replica count of the persistent cache task. + uint64 persistent_replica_count = 4 [(validate.rules).uint64.gte = 1]; + // Tag is used to distinguish different cache tasks. + optional string tag = 5; + // Application of task. + optional string application = 6; + // Task piece length. + uint64 piece_length = 7 [(validate.rules).uint64.gte = 1]; + // TTL of the cache task. + google.protobuf.Duration ttl = 8 [(validate.rules).duration = {gte.seconds: 60, lte.seconds: 604800}]; + // Upload timeout. + optional google.protobuf.Duration timeout = 9; +} + // StatCacheTaskRequest represents request of StatCacheTask. message StatCacheTaskRequest { // Task id. @@ -422,6 +444,9 @@ service Scheduler { // DeleteCachePeer releases cache peer in scheduler. rpc DeleteCachePeer(DeleteCachePeerRequest)returns(google.protobuf.Empty); + // UploadCacheTask uploads cache task to scheduler. + rpc UploadCacheTask(UploadCacheTaskRequest)returns(common.v2.CacheTask); + // Checks information of cache task. rpc StatCacheTask(StatCacheTaskRequest)returns(common.v2.CacheTask); diff --git a/proto/common.proto b/proto/common.proto index 7ba868a..d37f515 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -214,10 +214,12 @@ message CacheTask { uint32 piece_count = 9; // Task state. string state = 10; + // TTL of the cache task. + google.protobuf.Duration ttl = 11; // Task create time. - google.protobuf.Timestamp created_at = 11; + google.protobuf.Timestamp created_at = 12; // Task update time. - google.protobuf.Timestamp updated_at = 12; + google.protobuf.Timestamp updated_at = 13; } // Host metadata. diff --git a/proto/dfdaemon.proto b/proto/dfdaemon.proto index 80eacbd..ad5d8dc 100644 --- a/proto/dfdaemon.proto +++ b/proto/dfdaemon.proto @@ -162,8 +162,10 @@ message UploadCacheTaskRequest { optional string application = 4; // Task piece length. uint64 piece_length = 5; - // Download timeout. - optional google.protobuf.Duration timeout = 6; + // TTL of the cache task. + google.protobuf.Duration ttl = 6; + // Upload timeout. + optional google.protobuf.Duration timeout = 7; } // StatCacheTaskRequest represents request of StatCacheTask. diff --git a/proto/scheduler.proto b/proto/scheduler.proto index 9a5776f..fc47262 100644 --- a/proto/scheduler.proto +++ b/proto/scheduler.proto @@ -357,6 +357,28 @@ message DeleteCachePeerRequest { string peer_id = 3; } +// UploadCacheTaskRequest represents request of UploadCacheTask. +message UploadCacheTaskRequest { + // Host id. + string host_id = 1; + // Task id. + string task_id = 2; + // Peer id. + string peer_id = 3; + // Replica count of the persistent cache task. + uint64 persistent_replica_count = 4; + // Tag is used to distinguish different cache tasks. + optional string tag = 5; + // Application of task. + optional string application = 6; + // Task piece length. + uint64 piece_length = 7; + // TTL of the cache task. + google.protobuf.Duration ttl = 8; + // Upload timeout. + optional google.protobuf.Duration timeout = 9; +} + // StatCacheTaskRequest represents request of StatCacheTask. message StatCacheTaskRequest { // Task id. @@ -406,6 +428,9 @@ service Scheduler{ // DeleteCachePeer releases cache peer in scheduler. rpc DeleteCachePeer(DeleteCachePeerRequest)returns(google.protobuf.Empty); + // UploadCacheTask uploads cache task to scheduler. + rpc UploadCacheTask(UploadCacheTaskRequest)returns(common.v2.CacheTask); + // Checks information of cache task. rpc StatCacheTask(StatCacheTaskRequest)returns(common.v2.CacheTask); diff --git a/src/common.v2.rs b/src/common.v2.rs index ebceca4..255516e 100644 --- a/src/common.v2.rs +++ b/src/common.v2.rs @@ -171,11 +171,14 @@ pub struct CacheTask { /// Task state. #[prost(string, tag = "10")] pub state: ::prost::alloc::string::String, - /// Task create time. + /// TTL of the cache task. #[prost(message, optional, tag = "11")] + pub ttl: ::core::option::Option<::prost_wkt_types::Duration>, + /// Task create time. + #[prost(message, optional, tag = "12")] pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>, /// Task update time. - #[prost(message, optional, tag = "12")] + #[prost(message, optional, tag = "13")] pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>, } /// Host metadata. diff --git a/src/descriptor.bin b/src/descriptor.bin index 11fbcdab211cf7f2ce40778a4ba0463787ee901a..1e7b6e1db89acdeb6b2079bf22785b33d770d6c2 100644 GIT binary patch delta 8466 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 delta 7427 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, + /// Upload timeout. + #[prost(message, optional, tag = "7")] pub timeout: ::core::option::Option<::prost_wkt_types::Duration>, } /// StatCacheTaskRequest represents request of StatCacheTask. diff --git a/src/scheduler.v2.rs b/src/scheduler.v2.rs index 69c15f9..a2c5d8d 100644 --- a/src/scheduler.v2.rs +++ b/src/scheduler.v2.rs @@ -564,6 +564,39 @@ pub struct DeleteCachePeerRequest { #[prost(string, tag = "3")] pub peer_id: ::prost::alloc::string::String, } +/// UploadCacheTaskRequest represents request of UploadCacheTask. +#[derive(serde::Serialize, serde::Deserialize)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UploadCacheTaskRequest { + /// Host id. + #[prost(string, tag = "1")] + pub host_id: ::prost::alloc::string::String, + /// Task id. + #[prost(string, tag = "2")] + pub task_id: ::prost::alloc::string::String, + /// Peer id. + #[prost(string, tag = "3")] + pub peer_id: ::prost::alloc::string::String, + /// Replica count of the persistent cache task. + #[prost(uint64, tag = "4")] + pub persistent_replica_count: u64, + /// Tag is used to distinguish different cache tasks. + #[prost(string, optional, tag = "5")] + pub tag: ::core::option::Option<::prost::alloc::string::String>, + /// Application of task. + #[prost(string, optional, tag = "6")] + pub application: ::core::option::Option<::prost::alloc::string::String>, + /// Task piece length. + #[prost(uint64, tag = "7")] + pub piece_length: u64, + /// TTL of the cache task. + #[prost(message, optional, tag = "8")] + pub ttl: ::core::option::Option<::prost_wkt_types::Duration>, + /// Upload timeout. + #[prost(message, optional, tag = "9")] + pub timeout: ::core::option::Option<::prost_wkt_types::Duration>, +} /// StatCacheTaskRequest represents request of StatCacheTask. #[derive(serde::Serialize, serde::Deserialize)] #[allow(clippy::derive_partial_eq_without_eq)] @@ -946,6 +979,32 @@ pub mod scheduler_client { .insert(GrpcMethod::new("scheduler.v2.Scheduler", "DeleteCachePeer")); self.inner.unary(req, path, codec).await } + /// UploadCacheTask uploads cache task to scheduler. + pub async fn upload_cache_task( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/scheduler.v2.Scheduler/UploadCacheTask", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("scheduler.v2.Scheduler", "UploadCacheTask")); + self.inner.unary(req, path, codec).await + } /// Checks information of cache task. pub async fn stat_cache_task( &mut self, @@ -1095,6 +1154,14 @@ pub mod scheduler_server { &self, request: tonic::Request, ) -> std::result::Result, tonic::Status>; + /// UploadCacheTask uploads cache task to scheduler. + async fn upload_cache_task( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; /// Checks information of cache task. async fn stat_cache_task( &self, @@ -1692,6 +1759,52 @@ pub mod scheduler_server { }; Box::pin(fut) } + "/scheduler.v2.Scheduler/UploadCacheTask" => { + #[allow(non_camel_case_types)] + struct UploadCacheTaskSvc(pub Arc); + impl< + T: Scheduler, + > tonic::server::UnaryService + for UploadCacheTaskSvc { + type Response = super::super::super::common::v2::CacheTask; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + (*inner).upload_cache_task(request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = UploadCacheTaskSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/scheduler.v2.Scheduler/StatCacheTask" => { #[allow(non_camel_case_types)] struct StatCacheTaskSvc(pub Arc);