Skip to content

Commit 1f9736a

Browse files
nicklaslclaude
andcommitted
refactor: remove sdk from Host::log_resolve, source from state in log_assign
log_resolve: sdk param removed (no impl used it). log_assign: sdk now sourced from ResolverState instead of per-request. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 245865a commit 1f9736a

File tree

10 files changed

+25
-30
lines changed

10 files changed

+25
-30
lines changed

confidence-cloudflare-resolver/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pub struct SetResolverStateRequest {
3636
const CDN_STATE_BYTES: &[u8] = include_bytes!("../../data/resolver_state_current.pb");
3737
const ENCRYPTION_KEY_BASE64: &str = include_str!("../../data/encryption_key");
3838

39+
use confidence::flags::resolver::v1::Sdk;
3940
use confidence_resolver::proto::confidence::flags::resolver::v1::WriteFlagLogsRequest;
4041
use confidence_resolver::resolve_logger::ResolveLogger;
4142
use std::sync::{LazyLock, OnceLock};
@@ -89,8 +90,9 @@ impl Host for H {
8990
evaluation_context: &Struct,
9091
assigned_flags: &[FlagToApply],
9192
client: &Client,
93+
sdk: &Option<Sdk>,
9294
) {
93-
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client);
95+
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client, sdk);
9496
}
9597
}
9698

confidence-resolver/src/assign_logger.rs

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
use std::collections::VecDeque;
22
use std::sync::Mutex;
33

4-
use arc_swap::ArcSwap;
5-
use std::sync::Arc;
6-
74
use crate::proto::confidence::flags::resolver::v1::WriteFlagLogsRequest;
85
use crate::FlagToApply;
96
use prost::{length_delimiter_len, Message};
@@ -25,30 +22,17 @@ struct State {
2522
pending_bytes: usize,
2623
}
2724

28-
#[derive(Debug)]
25+
#[derive(Debug, Default)]
2926
pub struct AssignLogger {
3027
assigned: crossbeam_queue::SegQueue<pb::FlagAssigned>,
3128
state: Mutex<State>,
32-
sdk: ArcSwap<Option<crate::flags_resolver::Sdk>>,
33-
}
34-
35-
impl Default for AssignLogger {
36-
fn default() -> Self {
37-
Self {
38-
assigned: crossbeam_queue::SegQueue::new(),
39-
state: Mutex::default(),
40-
sdk: ArcSwap::from_pointee(None),
41-
}
42-
}
4329
}
4430

4531
impl AssignLogger {
4632
pub fn new() -> Self {
47-
Self::default()
48-
}
49-
50-
pub fn set_sdk(&self, sdk: Option<crate::flags_resolver::Sdk>) {
51-
self.sdk.store(Arc::new(sdk));
33+
Self {
34+
..Default::default()
35+
}
5236
}
5337

5438
pub fn log_assigns(
@@ -57,12 +41,12 @@ impl AssignLogger {
5741
_evaluation_context: &crate::proto::google::Struct,
5842
assigned_flags: &[FlagToApply],
5943
client: &crate::Client,
44+
sdk: &Option<crate::flags_resolver::Sdk>,
6045
) {
61-
let sdk = self.sdk.load();
6246
let client_info = Some(pb::ClientInfo {
6347
client: client.client_name.to_string(),
6448
client_credential: client.client_credential_name.to_string(),
65-
sdk: (**sdk).clone(),
49+
sdk: sdk.clone(),
6650
});
6751
let flags = assigned_flags
6852
.iter()

confidence-resolver/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ pub trait Host {
276276
evaluation_context: &Struct,
277277
assigned_flags: &[FlagToApply],
278278
client: &Client,
279+
sdk: &Option<flags_resolver::Sdk>,
279280
);
280281

281282
fn encrypt_resolve_token(token_data: &[u8], encryption_key: &[u8]) -> Result<Vec<u8>, String> {
@@ -868,6 +869,7 @@ impl<'a, H: Host> AccountResolver<'a, H> {
868869
&self.evaluation_context.context,
869870
flags_to_apply.as_slice(),
870871
self.client,
872+
&self.state.sdk,
871873
);
872874
} else {
873875
let mut resolve_token_v1 = flags_resolver::ResolveTokenV1 {
@@ -971,6 +973,7 @@ impl<'a, H: Host> AccountResolver<'a, H> {
971973
evaluation_context,
972974
assigned_flags.as_slice(),
973975
self.client,
976+
&self.state.sdk,
974977
);
975978

976979
Ok(())
@@ -1676,6 +1679,7 @@ mod tests {
16761679
_evaluation_context: &Struct,
16771680
_assigned_flag: &[FlagToApply],
16781681
_client: &Client,
1682+
_sdk: &Option<Sdk>,
16791683
) {
16801684
// In tests, we don't need to print anything
16811685
}
@@ -2075,6 +2079,7 @@ mod tests {
20752079
_evaluation_context: &Struct,
20762080
assigned_flag: &[FlagToApply],
20772081
_client: &Client,
2082+
_sdk: &Option<Sdk>,
20782083
) {
20792084
let mut logs = TestLogger::get_instance()
20802085
.assign_logs
@@ -2220,6 +2225,7 @@ mod tests {
22202225
evaluation_context: &Struct,
22212226
assigned_flag: &[FlagToApply],
22222227
_client: &Client,
2228+
_sdk: &Option<Sdk>,
22232229
) {
22242230
let mut logs = TestLogger::get_instance()
22252231
.assign_logs

confidence-resolver/src/materialization_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ impl Host for L {
3333
_evaluation_context: &Struct,
3434
_assigned_flag: &[FlagToApply],
3535
_client: &Client,
36+
_sdk: &Option<flags_resolver::Sdk>,
3637
) {
3738
}
3839
}

confidence-resolver/src/resolve_logger.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ mod tests {
342342
_evaluation_context: &Struct,
343343
_assigned_flags: &[crate::FlagToApply],
344344
_client: &Client,
345+
_sdk: &Option<crate::flags_resolver::Sdk>,
345346
) {
346347
}
347348

confidence-resolver/src/resolver_spec_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ impl Host for L {
3131
_evaluation_context: &Struct,
3232
_assigned_flag: &[FlagToApply],
3333
_client: &Client,
34+
_sdk: &Option<flags_resolver::Sdk>,
3435
) {
3536
}
3637
}
Binary file not shown.

openfeature-provider/rust/src/host.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use std::sync::LazyLock;
44

55
use confidence_resolver::assign_logger::AssignLogger;
6+
use confidence_resolver::proto::confidence::flags::resolver::v1::Sdk;
67
use confidence_resolver::proto::google::Struct;
78
use confidence_resolver::resolve_logger::ResolveLogger;
89
use confidence_resolver::{Client, FlagToApply, Host, ResolvedValue};
@@ -45,7 +46,8 @@ impl Host for NativeHost {
4546
evaluation_context: &Struct,
4647
assigned_flags: &[FlagToApply],
4748
client: &Client,
49+
sdk: &Option<Sdk>,
4850
) {
49-
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client);
51+
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client, sdk);
5052
}
5153
}

openfeature-provider/rust/src/provider.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,6 @@ impl ConfidenceProvider {
204204

205205
/// Initialize the provider by fetching initial state and starting background tasks.
206206
pub async fn init(&mut self) -> Result<()> {
207-
ASSIGN_LOGGER.set_sdk(Some(provider_sdk()));
208-
209207
// Fetch initial state
210208
let result = self.state_fetcher.fetch().await?;
211209
if let Some((state, account_id)) = result {

wasm/rust-guest/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use crate::proto::SetResolverStateRequest;
2525
use confidence_resolver::{
2626
proto::{
2727
confidence::flags::admin::v1::ResolverState as ResolverStatePb,
28-
confidence::flags::resolver::v1::{ApplyFlagsRequest, ResolveProcessResponse},
28+
confidence::flags::resolver::v1::{ApplyFlagsRequest, ResolveProcessResponse, Sdk},
2929
google::{Struct, Timestamp},
3030
},
3131
Client, FlagToApply, Host, ResolvedValue, ResolverState,
@@ -96,8 +96,9 @@ impl Host for WasmHost {
9696
evaluation_context: &Struct,
9797
assigned_flags: &[FlagToApply],
9898
client: &Client,
99+
sdk: &Option<Sdk>,
99100
) {
100-
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client);
101+
ASSIGN_LOGGER.log_assigns(resolve_id, evaluation_context, assigned_flags, client, sdk);
101102
}
102103

103104
fn encrypt_resolve_token(token_data: &[u8], _encryption_key: &[u8]) -> Result<Vec<u8>, String> {
@@ -131,8 +132,7 @@ wasm_msg_guest! {
131132
fn set_resolver_state(request: SetResolverStateRequest) -> WasmResult<Void> {
132133
let state_pb = ResolverStatePb::decode(request.state.as_slice())
133134
.map_err(|e| format!("Failed to decode resolver state: {}", e))?;
134-
let new_state = ResolverState::from_proto(state_pb, request.account_id.as_str(), request.sdk.clone())?;
135-
ASSIGN_LOGGER.set_sdk(request.sdk);
135+
let new_state = ResolverState::from_proto(state_pb, request.account_id.as_str(), request.sdk)?;
136136
RESOLVER_STATE.store(Some(Arc::new(new_state)));
137137
// TODO: track state age once we decide on the right timestamp source
138138
// let now = WasmHost::current_time();

0 commit comments

Comments
 (0)