From d432bf44b507923a8f8f1625f66c5cc636ce1a7d Mon Sep 17 00:00:00 2001 From: Luca Simonetti Date: Tue, 30 Jul 2024 08:36:04 +0200 Subject: [PATCH] fix(1281): adds a config feature check --- async-nats/src/jetstream/kv/mod.rs | 12 ++- async-nats/tests/kv_tests.rs | 126 +++++++++++++++-------------- 2 files changed, 74 insertions(+), 64 deletions(-) diff --git a/async-nats/src/jetstream/kv/mod.rs b/async-nats/src/jetstream/kv/mod.rs index 64464ba0e..284671518 100644 --- a/async-nats/src/jetstream/kv/mod.rs +++ b/async-nats/src/jetstream/kv/mod.rs @@ -1051,8 +1051,16 @@ impl Store { config.filter_subject = first; } (Some(first), Some(second)) => { - config.filter_subjects = vec![first, second]; - config.filter_subjects.extend(filters); + #[cfg(feature = "server_2_10")] + { + config.filter_subjects = vec![first, second]; + config.filter_subjects.extend(filters); + } + #[cfg(not(feature = "server_2_10"))] + { + config.filter_subject = first; + // maybe a warning + } } _ => {} } diff --git a/async-nats/tests/kv_tests.rs b/async-nats/tests/kv_tests.rs index 1b088b1d7..917466679 100644 --- a/async-nats/tests/kv_tests.rs +++ b/async-nats/tests/kv_tests.rs @@ -795,69 +795,71 @@ mod kv { keys.sort(); assert_eq!(vec!["bar", "foo"], keys); - let mut keys_with_filter = kv - .keys_with_filters(vec!["bar"]) - .await - .unwrap() - .try_collect::>() - .await - .unwrap(); - keys_with_filter.sort(); - assert_eq!(vec!["bar"], keys_with_filter); - - kv.put("foo1.bar", 37.to_string().into()).await.unwrap(); - kv.put("foo1.baz.boo", 73.to_string().into()).await.unwrap(); - kv.put("foo1.baz.baz", 89.to_string().into()).await.unwrap(); - - let mut keys_with_filters = kv - .keys_with_filters(vec!["foo", "bar"]) - .await - .unwrap() - .try_collect::>() - .await - .unwrap(); - keys_with_filters.sort(); - assert_eq!(vec!["bar", "foo"], keys_with_filters); - - let mut keys_with_filters = kv - .keys_with_filters(vec!["foo1.*.*"]) - .await - .unwrap() - .try_collect::>() - .await - .unwrap(); - keys_with_filters.sort(); - assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters); - - let mut keys_with_filters = kv - .keys_with_filters(vec!["foo1.*.*", "foo1.*"]) - .await - .unwrap() - .try_collect::>() - .await - .unwrap(); - keys_with_filters.sort(); - assert_eq!( - vec!["foo1.bar", "foo1.baz.baz", "foo1.baz.boo"], - keys_with_filters - ); - - let mut keys_with_filters = kv - .keys_with_filters(vec!["*.baz.*"]) - .await - .unwrap() - .try_collect::>() - .await - .unwrap(); - - keys_with_filters.sort(); - assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters); - - // cleanup the keys - kv.delete("foo1.bar").await.unwrap(); - kv.delete("foo1.baz.boo").await.unwrap(); - kv.delete("foo1.baz.baz").await.unwrap(); + #[cfg(feature = "server_2_10")] + { + let mut keys_with_filter = kv + .keys_with_filters(vec!["bar"]) + .await + .unwrap() + .try_collect::>() + .await + .unwrap(); + keys_with_filter.sort(); + assert_eq!(vec!["bar"], keys_with_filter); + + kv.put("foo1.bar", 37.to_string().into()).await.unwrap(); + kv.put("foo1.baz.boo", 73.to_string().into()).await.unwrap(); + kv.put("foo1.baz.baz", 89.to_string().into()).await.unwrap(); + + let mut keys_with_filters = kv + .keys_with_filters(vec!["foo", "bar"]) + .await + .unwrap() + .try_collect::>() + .await + .unwrap(); + keys_with_filters.sort(); + assert_eq!(vec!["bar", "foo"], keys_with_filters); + + let mut keys_with_filters = kv + .keys_with_filters(vec!["foo1.*.*"]) + .await + .unwrap() + .try_collect::>() + .await + .unwrap(); + keys_with_filters.sort(); + assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters); + + let mut keys_with_filters = kv + .keys_with_filters(vec!["foo1.*.*", "foo1.*"]) + .await + .unwrap() + .try_collect::>() + .await + .unwrap(); + keys_with_filters.sort(); + assert_eq!( + vec!["foo1.bar", "foo1.baz.baz", "foo1.baz.boo"], + keys_with_filters + ); + let mut keys_with_filters = kv + .keys_with_filters(vec!["*.baz.*"]) + .await + .unwrap() + .try_collect::>() + .await + .unwrap(); + + keys_with_filters.sort(); + assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters); + + // cleanup the keys + kv.delete("foo1.bar").await.unwrap(); + kv.delete("foo1.baz.boo").await.unwrap(); + kv.delete("foo1.baz.baz").await.unwrap(); + } // filters like "foo.b*" should not return anything because it's not a valid filter // Delete a key and make sure it doesn't show up in the keys list