From 050dc7fb9122310a6939f679c790e007e1caa0c7 Mon Sep 17 00:00:00 2001 From: Daniel Vigovszky Date: Mon, 7 Oct 2024 10:43:21 +0200 Subject: [PATCH] Serialization fix --- Cargo.lock | 123 ++++++++++++++++---------------- golem-common/src/model/mod.rs | 10 +++ golem-service-base/src/model.rs | 1 + 3 files changed, 71 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd0e699b4..9dd02b66a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -464,7 +464,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4042078ea593edffc452eef14e99fdb2b120caa4ad9618bcdeabc4a023b98740" dependencies = [ "futures", - "pin-project 1.1.5", + "pin-project 1.1.6", "tokio", ] @@ -568,9 +568,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.7" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8191fb3091fa0561d1379ef80333c3c7191c6f0435d986e85821bcf7acbd1126" +checksum = "7198e6f03240fdceba36656d8be440297b6b82270325908c7381f37d826a74f6" dependencies = [ "aws-credential-types", "aws-runtime", @@ -663,9 +663,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.53.0" +version = "1.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fad71130014e11f42fadbdcce5df12ee61866f8ab9bad773b138d4b3c11087" +checksum = "e2f2a62020f3e06f9b352b2a23547f6e1d110b6bf1e18a6b588ae36114eaf6e2" dependencies = [ "ahash", "aws-credential-types", @@ -698,9 +698,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.44.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b90cfe6504115e13c41d3ea90286ede5aa14da294f3fe077027a6e83850843c" +checksum = "e33ae899566f3d395cbf42858e433930682cc9c1889fa89318896082fef45efb" dependencies = [ "aws-credential-types", "aws-runtime", @@ -720,9 +720,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.45.0" +version = "1.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167c0fad1f212952084137308359e8e4c4724d1c643038ce163f06de9662c1d0" +checksum = "f39c09e199ebd96b9f860b0fce4b6625f211e064ad7c8693b72ecf7ef03881e0" dependencies = [ "aws-credential-types", "aws-runtime", @@ -742,9 +742,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.44.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb5f98188ec1435b68097daa2a37d74b9d17c9caa799466338a8d1544e71b9d" +checksum = "3d95f93a98130389eb6233b9d615249e543f6c24a68ca1f109af9ca5164a8765" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1489,9 +1489,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.24" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ "jobserver", "libc", @@ -3090,9 +3090,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -3105,9 +3105,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -3115,15 +3115,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -3143,9 +3143,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -3177,9 +3177,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -3188,21 +3188,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -3757,7 +3757,7 @@ dependencies = [ "kube", "prometheus", "prost", - "rustls 0.23.13", + "rustls 0.23.14", "serde 1.0.210", "serde_json", "thiserror", @@ -3818,7 +3818,7 @@ dependencies = [ [[package]] name = "golem-wasm-ast" version = "0.0.0" -source = "git+https://github.com/golemcloud/golem-wasm-ast?branch=vigoo/type-constructors#a9796ccd96a9cd71bdefa1a07b1754f1501f5323" +source = "git+https://github.com/golemcloud/golem-wasm-ast?branch=vigoo/type-constructors#d295a8198863dbf85dca144fac4551c7da6863a7" dependencies = [ "bincode", "leb128", @@ -4037,7 +4037,7 @@ dependencies = [ "rand", "redis", "ringbuf", - "rustls 0.23.13", + "rustls 0.23.14", "serde 1.0.210", "serde_json", "sqlx", @@ -4598,7 +4598,7 @@ dependencies = [ "hyper 1.4.1", "hyper-util", "log", - "rustls 0.23.13", + "rustls 0.23.14", "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", @@ -5131,7 +5131,7 @@ dependencies = [ "k8s-openapi", "kube-core", "pem", - "rustls 0.23.13", + "rustls 0.23.14", "rustls-pemfile 2.2.0", "secrecy", "serde 1.0.210", @@ -5194,7 +5194,7 @@ dependencies = [ "k8s-openapi", "kube-client", "parking_lot", - "pin-project 1.1.5", + "pin-project 1.1.6", "serde 1.0.210", "serde_json", "thiserror", @@ -5872,12 +5872,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.1" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" @@ -6344,11 +6341,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ - "pin-project-internal 1.1.5", + "pin-project-internal 1.1.6", ] [[package]] @@ -6364,9 +6361,9 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", @@ -7425,9 +7422,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" dependencies = [ "aws-lc-rs", "log", @@ -7558,9 +7555,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -7878,9 +7875,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9720086b3357bcb44fce40117d769a4d068c70ecfa190850a980a71755f66fcc" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", @@ -7890,7 +7887,7 @@ dependencies = [ "serde 1.0.210", "serde_derive", "serde_json", - "serde_with_macros 3.10.0", + "serde_with_macros 3.11.0", "time", ] @@ -7908,9 +7905,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f1abbfe725f27678f4663bcacb75a83e829fd464c25d78dd038a3a29e307cec" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling 0.20.10", "proc-macro2", @@ -8865,7 +8862,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.13", + "rustls 0.23.14", "rustls-pki-types", "tokio", ] @@ -9018,7 +9015,7 @@ dependencies = [ "hyper 0.14.30", "hyper-timeout 0.4.1", "percent-encoding", - "pin-project 1.1.5", + "pin-project 1.1.6", "prost", "tokio", "tokio-stream", @@ -9076,7 +9073,7 @@ dependencies = [ "futures-core", "futures-util", "indexmap 1.9.3", - "pin-project 1.1.5", + "pin-project 1.1.6", "pin-project-lite", "rand", "slab", @@ -9157,7 +9154,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.1.5", + "pin-project 1.1.6", "tracing", ] @@ -9559,7 +9556,7 @@ dependencies = [ "indexmap 2.6.0", "itertools 0.12.1", "serde 1.0.210", - "serde_with 3.10.0", + "serde_with 3.11.0", "thiserror", "warg-crypto", "warg-protocol", @@ -9666,7 +9663,7 @@ dependencies = [ "prost-types", "semver", "serde 1.0.210", - "serde_with 3.10.0", + "serde_with 3.11.0", "thiserror", "warg-crypto", "warg-protobuf", @@ -9705,7 +9702,7 @@ dependencies = [ "mime_guess", "multer 2.1.0", "percent-encoding", - "pin-project 1.1.5", + "pin-project 1.1.6", "scoped-tls", "serde 1.0.210", "serde_json", diff --git a/golem-common/src/model/mod.rs b/golem-common/src/model/mod.rs index e2c518fcd..7521a68f7 100644 --- a/golem-common/src/model/mod.rs +++ b/golem-common/src/model/mod.rs @@ -1459,6 +1459,7 @@ impl Display for WorkerNotFilter { #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize, Encode, Decode, Union)] #[oai(discriminator_name = "type", one_of = true)] +#[serde(tag = "type")] pub enum WorkerFilter { Name(WorkerNameFilter), Status(WorkerStatusFilter), @@ -2461,6 +2462,7 @@ mod tests { WorkerStatusRecord, }; use bincode::{Decode, Encode}; + use poem_openapi::types::ToJSON; use rand::{thread_rng, Rng}; use serde::{Deserialize, Serialize}; @@ -2779,4 +2781,12 @@ mod tests { assert_ne!(derived22a, derived32); assert_ne!(derived31, derived32); } + + #[test] + fn worker_status_serialization_poem_serde_equivalence() { + let status = WorkerStatus::Retrying; + let serialized = status.to_json_string(); + let deserialized: WorkerStatus = serde_json::from_str(&serialized).unwrap(); + assert_eq!(status, deserialized); + } } diff --git a/golem-service-base/src/model.rs b/golem-service-base/src/model.rs index d943f9491..aaaab0b34 100644 --- a/golem-service-base/src/model.rs +++ b/golem-service-base/src/model.rs @@ -1136,6 +1136,7 @@ pub struct InvokeResult { #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Union, thiserror::Error)] #[oai(discriminator_name = "type", one_of = true)] +#[serde(tag = "type")] pub enum GolemError { #[error(transparent)] InvalidRequest(GolemErrorInvalidRequest),