Skip to content

Commit d1c0e06

Browse files
authored
Merge branch 'main' into dev2
Signed-off-by: jokemanfire <hu.dingyang@zte.com.cn>
2 parents 272de15 + 7794b07 commit d1c0e06

File tree

20 files changed

+54
-55
lines changed

20 files changed

+54
-55
lines changed

Cargo.toml

+7-6
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,18 @@ nix = "0.29"
3535
oci-spec = "0.6"
3636
os_pipe = "1.1"
3737
prctl = "1.0.0"
38-
prost = "0.12"
39-
prost-build = "0.12"
40-
prost-types = "0.12"
38+
prost = "0.13"
39+
prost-build = "0.13"
40+
prost-types = "0.13"
4141
serde = { version = "1.0", features = ["derive"] }
4242
serde_json = "1.0"
4343
simple_logger = { version = "5.0", default-features = false }
4444
tempfile = "3.6"
4545
thiserror = "1.0"
4646
time = { version = "0.3.29", features = ["serde", "std", "formatting"] }
4747
tokio = "1.40"
48-
tonic = "0.11"
49-
tonic-build = "0.11"
50-
tower = "0.4"
48+
tonic = "0.12"
49+
tonic-build = "0.12"
50+
tower = "0.5"
51+
5152
uuid = { version = "1.0", features = ["v4"] }

crates/client/Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "containerd-client"
3-
version = "0.5.0"
3+
version = "0.6.0"
44
authors = [
55
"Maksym Pavlenko <pavlenko.maksym@gmail.com>",
66
"The containerd Authors",
@@ -23,6 +23,7 @@ name = "version"
2323
path = "examples/version.rs"
2424

2525
[dependencies]
26+
hyper-util = "0.1.6" # https://github.com/hyperium/hyper/issues/3110
2627
prost.workspace = true
2728
prost-types.workspace = true
2829
tokio = { workspace = true, optional = true }

crates/client/build.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fn main() {
7070

7171
tonic_build::configure()
7272
.build_server(false)
73-
.compile_with_config(config, PROTO_FILES, &["vendor/"])
73+
.compile_protos_with_config(config, PROTO_FILES, &["vendor/"])
7474
.expect("Failed to generate GRPC bindings");
7575

7676
for module in FIXUP_MODULES {

crates/client/src/lib.rs

+20-14
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,29 @@ pub async fn connect(
8686

8787
let path = path.as_ref().to_path_buf();
8888

89-
// Taken from https://github.com/hyperium/tonic/blob/eeb3268f71ae5d1107c937392389db63d8f721fb/examples/src/uds/client.rs#L19
89+
// Taken from https://github.com/hyperium/tonic/blob/71fca362d7ffbb230547f23b3f2fb75c414063a8/examples/src/uds/client.rs#L21-L28
9090
// There will ignore this uri because uds do not use it
9191
// and make connection with UnixStream::connect.
92-
let channel = Endpoint::try_from("http://[::]")
93-
.unwrap()
92+
let channel = Endpoint::try_from("http://[::]")?
9493
.connect_with_connector(tower::service_fn(move |_| {
95-
#[cfg(unix)]
96-
{
97-
tokio::net::UnixStream::connect(path.clone())
98-
}
99-
100-
#[cfg(windows)]
101-
{
102-
let client = tokio::net::windows::named_pipe::ClientOptions::new()
103-
.open(path.clone())
104-
.map_err(|e| std::io::Error::from(e));
105-
async move { client }
94+
let path = path.clone();
95+
96+
async move {
97+
#[cfg(unix)]
98+
{
99+
Ok::<_, std::io::Error>(hyper_util::rt::TokioIo::new(
100+
tokio::net::UnixStream::connect(path).await?,
101+
))
102+
}
103+
104+
#[cfg(windows)]
105+
{
106+
let client = tokio::net::windows::named_pipe::ClientOptions::new()
107+
.open(&path)
108+
.map_err(|e| std::io::Error::from(e))?;
109+
110+
Ok::<_, std::io::Error>(hyper_util::rt::TokioIo::new(client))
111+
}
106112
}
107113
}))
108114
.await?;

crates/runc/src/utils.rs

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ pub async fn write_value_to_temp_file<T: Serialize>(value: &T) -> Result<String,
9898
let filename = format!("{}/runc-process-{}", xdg_runtime_dir(), Uuid::new_v4());
9999
let mut f = tokio::fs::OpenOptions::new()
100100
.create(true)
101+
.truncate(true)
101102
.write(true)
102103
.open(&filename)
103104
.await

crates/shim-protos/Cargo.toml

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "containerd-shim-protos"
3-
version = "0.7.0"
3+
version = "0.7.2"
44
authors = [
55
"Maksym Pavlenko <pavlenko.maksym@gmail.com>",
66
"The containerd Authors",
@@ -49,11 +49,13 @@ required-features = ["async"]
4949

5050
[dependencies]
5151
async-trait = { workspace = true, optional = true }
52-
protobuf = "=3.5"
53-
ttrpc = "0.8"
52+
# protobuf 3.5 introduces a breaking change: https://github.com/containerd/rust-extensions/issues/295
53+
# pinning to <3.5.0 until we can update the generated code
54+
protobuf = ">= 3.0, <3.5.0"
55+
ttrpc = "0.8.2"
5456

5557
[build-dependencies]
56-
ttrpc-codegen = "0.4"
58+
ttrpc-codegen = "0.4.2"
5759

5860
[dev-dependencies]
5961
ctrlc = { version = "3.0", features = ["termination"] }

crates/shim-protos/examples/ttrpc-server-async.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,7 @@ impl Task for FakeServer {
6060
async fn main() {
6161
simple_logger::SimpleLogger::new().init().unwrap();
6262

63-
let t = Box::new(FakeServer::new()) as Box<dyn Task + Send + Sync>;
64-
let t = Arc::new(t);
65-
let tservice = create_task(t);
63+
let tservice = create_task(Arc::new(FakeServer::new()));
6664

6765
let mut server = Server::new()
6866
.bind("unix:///tmp/shim-proto-ttrpc-001")

crates/shim-protos/examples/ttrpc-server.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ impl Task for FakeServer {
5757
fn main() {
5858
simple_logger::SimpleLogger::new().init().unwrap();
5959

60-
let t = Box::new(FakeServer::new()) as Box<dyn Task + Send + Sync>;
61-
let t = Arc::new(t);
62-
let tservice = create_task(t);
60+
let tservice = create_task(Arc::new(FakeServer::new()));
6361

6462
let mut server = Server::new()
6563
.bind("unix:///tmp/shim-proto-ttrpc-001")

crates/shim-protos/tests/ttrpc.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ fn create_ttrpc_context() -> (
7272

7373
#[test]
7474
fn test_task_method_num() {
75-
let server = Arc::new(Box::new(FakeServer::new()) as Box<dyn Task + Send + Sync>);
76-
let task = create_task(server.clone());
77-
75+
let task = create_task(Arc::new(FakeServer::new()));
7876
assert_eq!(task.len(), 17);
7977
}
8078

@@ -98,8 +96,7 @@ fn test_create_task() {
9896
request.set_timeout_nano(10000);
9997
request.set_metadata(ttrpc::context::to_pb(ctx.metadata.clone()));
10098

101-
let server = Arc::new(Box::new(FakeServer::new()) as Box<dyn Task + Send + Sync>);
102-
let task = create_task(server.clone());
99+
let task = create_task(Arc::new(FakeServer::new()));
103100
let create = task.get("/containerd.task.v2.Task/Create").unwrap();
104101
create.handler(ctx, request).unwrap();
105102

@@ -140,8 +137,7 @@ fn test_delete_task() {
140137
request.set_timeout_nano(10000);
141138
request.set_metadata(ttrpc::context::to_pb(ctx.metadata.clone()));
142139

143-
let server = Arc::new(Box::new(FakeServer::new()) as Box<dyn Task + Send + Sync>);
144-
let task = create_task(server.clone());
140+
let task = create_task(Arc::new(FakeServer::new()));
145141
let delete = task.get("/containerd.task.v2.Task/Delete").unwrap();
146142
delete.handler(ctx, request).unwrap();
147143

crates/shim/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "containerd-shim"
3-
version = "0.7.1"
3+
version = "0.7.4"
44
authors = [
55
"Maksym Pavlenko <pavlenko.maksym@gmail.com>",
66
"The containerd Authors",
@@ -34,7 +34,7 @@ name = "windows-log-reader"
3434
path = "examples/windows_log_reader.rs"
3535

3636
[dependencies]
37-
containerd-shim-protos = { path = "../shim-protos", version = "0.7.0" }
37+
containerd-shim-protos = { path = "../shim-protos", version = "0.7.2" }
3838
go-flag = "0.1.0"
3939
lazy_static = "1.4.0"
4040
libc.workspace = true

crates/shim/src/args.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub fn parse<S: AsRef<OsStr>>(args: &[S]) -> Result<Flags> {
6060
})
6161
.map_err(|e| Error::InvalidArgument(e.to_string()))?;
6262

63-
if let Some(action) = args.get(0) {
63+
if let Some(action) = args.first() {
6464
flags.action = action.into();
6565
}
6666

crates/shim/src/asynchronous/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ where
178178

179179
let publisher = RemotePublisher::new(&ttrpc_address).await?;
180180
let task = shim.create_task_service(publisher).await;
181-
let task_service = create_task(Arc::new(Box::new(task)));
181+
let task_service = create_task(Arc::new(task));
182182
let mut server = Server::new().register_service(task_service);
183183
server = server.add_listener(SOCKET_FD)?;
184184
server = server.set_domain_unix();

crates/shim/src/asynchronous/publisher.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,7 @@ mod tests {
148148
let barrier2 = barrier.clone();
149149
let server_thread = tokio::spawn(async move {
150150
let listener = UnixListener::bind(&path1).unwrap();
151-
let t = Arc::new(Box::new(server) as Box<dyn Events + Send + Sync>);
152-
let service = create_events(t);
151+
let service = create_events(Arc::new(server));
153152
let mut server = Server::new()
154153
.set_domain_unix()
155154
.add_listener(listener.as_raw_fd())

crates/shim/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,12 @@ macro_rules! cfg_async {
9494
}
9595

9696
cfg_not_async! {
97-
pub use crate::synchronous::*;
9897
pub use crate::synchronous::publisher;
9998
pub use protos::shim::shim_ttrpc::Task;
10099
pub use protos::ttrpc::TtrpcContext;
101100
}
102101

103102
cfg_async! {
104-
pub use crate::asynchronous::*;
105103
pub use crate::asynchronous::publisher;
106104
pub use protos::shim_async::Task;
107105
pub use protos::ttrpc::r#async::TtrpcContext;

crates/shim/src/synchronous/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ where
266266

267267
let publisher = publisher::RemotePublisher::new(&ttrpc_address)?;
268268
let task = shim.create_task_service(publisher);
269-
let task_service = create_task(Arc::new(Box::new(task)));
269+
let task_service = create_task(Arc::new(task));
270270
let mut server = create_server(flags)?;
271271
server = server.register_service(task_service);
272272
server.start()?;

crates/shim/src/synchronous/publisher.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,7 @@ mod tests {
188188
use std::os::unix::{io::AsRawFd, net::UnixListener};
189189
let listener = UnixListener::bind(server_address).unwrap();
190190
listener.set_nonblocking(true).unwrap();
191-
let t = Arc::new(Box::new(FakeServer {}) as Box<dyn Events + Send + Sync>);
192-
let service = client::create_events(t);
191+
let service = client::create_events(Arc::new(FakeServer {}));
193192
let server = Server::new()
194193
.add_listener(listener.as_raw_fd())
195194
.unwrap()
@@ -200,8 +199,7 @@ mod tests {
200199

201200
#[cfg(windows)]
202201
{
203-
let t = Arc::new(Box::new(FakeServer {}) as Box<dyn Events + Send + Sync>);
204-
let service = client::create_events(t);
202+
let service = client::create_events(Arc::new(FakeServer {}));
205203

206204
Server::new()
207205
.bind(server_address)

crates/shim/src/sys/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
#[cfg(windows)]
1818
pub(crate) mod windows;
1919
#[cfg(windows)]
20+
#[allow(unused_imports)]
2021
pub use crate::sys::windows::NamedPipeLogger;

crates/shim/src/sys/windows/named_pipe_logger.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl log::Log for NamedPipeLogger {
100100
.current_connection
101101
.lock()
102102
.unwrap()
103-
.write(message.as_bytes())
103+
.write_all(message.as_bytes())
104104
{
105105
Ok(_) => {}
106106
Err(ref e) if e.kind() == io::ErrorKind::Interrupted => {

crates/snapshots/build.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const FIXUP_MODULES: &[&str] = &["containerd.services.snapshots.v1"];
2626
fn main() {
2727
tonic_build::configure()
2828
.build_server(true)
29-
.compile(PROTO_FILES, &["vendor/"])
29+
.compile_protos(PROTO_FILES, &["vendor/"])
3030
.expect("Failed to generate GRPC bindings");
3131

3232
for module in FIXUP_MODULES {

rust-toolchain.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[toolchain]
2-
channel = "1.74"
2+
channel = "1.77"
33
components = ["rustfmt", "clippy", "llvm-tools"]

0 commit comments

Comments
 (0)