Skip to content

Commit 591a3e2

Browse files
committed
Merge pull request #6099 from nymtech/bugfix/incompatibility-fixes
Bugfix/incompatibility fixes
1 parent 0ddfcee commit 591a3e2

File tree

12 files changed

+96
-110
lines changed

12 files changed

+96
-110
lines changed

clients/native/src/client/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ impl SocketClient {
6060
let ClientInput {
6161
connection_command_sender,
6262
input_sender,
63+
..
6364
} = client_input;
6465

6566
let ClientOutput {

common/client-core/src/client/base_client/mod.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ pub mod storage;
8787
pub struct ClientInput {
8888
pub connection_command_sender: ConnectionCommandSender,
8989
pub input_sender: InputMessageSender,
90+
pub client_request_sender: ClientRequestSender,
9091
}
9192

9293
impl ClientInput {
@@ -746,9 +747,12 @@ where
746747
shutdown_tracker: &ShutdownTracker,
747748
) -> (BatchMixMessageSender, ClientRequestSender) {
748749
info!("Starting mix traffic controller...");
749-
let (mut mix_traffic_controller, mix_tx, client_tx) =
750+
let mut mix_traffic_controller =
750751
MixTrafficController::new(gateway_transceiver, shutdown_tracker.clone_shutdown_token());
751752

753+
let mix_tx = mix_traffic_controller.mix_rx();
754+
let client_tx = mix_traffic_controller.client_tx();
755+
752756
shutdown_tracker.try_spawn_named(
753757
async move { mix_traffic_controller.run().await },
754758
"MixTrafficController",
@@ -1074,6 +1078,7 @@ where
10741078
client_input: ClientInput {
10751079
connection_command_sender: client_connection_tx,
10761080
input_sender,
1081+
client_request_sender,
10771082
},
10781083
},
10791084
client_output: ClientOutputStatus::AwaitingConsumer {
@@ -1089,7 +1094,6 @@ where
10891094
},
10901095
stats_reporter,
10911096
shutdown_handle: shutdown_tracker, // The primary tracker for this client
1092-
client_request_sender,
10931097
forget_me: self.config.debug.forget_me,
10941098
remember_me: self.config.debug.remember_me,
10951099
})
@@ -1103,7 +1107,6 @@ pub struct BaseClient {
11031107
pub client_output: ClientOutputStatus,
11041108
pub client_state: ClientState,
11051109
pub stats_reporter: ClientStatsSender,
1106-
pub client_request_sender: ClientRequestSender,
11071110
pub shutdown_handle: ShutdownTracker,
11081111
pub forget_me: ForgetMe,
11091112
pub remember_me: RememberMe,

common/client-core/src/client/mix_traffic/mod.rs

Lines changed: 39 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ pub struct Empty;
2525
pub struct MixTrafficController {
2626
gateway_transceiver: Box<dyn GatewayTransceiver + Send>,
2727

28+
mix_tx: BatchMixMessageSender,
2829
mix_rx: BatchMixMessageReceiver,
2930
client_rx: ClientRequestReceiver,
31+
client_tx: ClientRequestSender,
3032

3133
// TODO: this is temporary work-around.
3234
// in long run `gateway_client` will be moved away from `MixTrafficController` anyway.
@@ -36,14 +38,7 @@ pub struct MixTrafficController {
3638
}
3739

3840
impl MixTrafficController {
39-
pub fn new<T>(
40-
gateway_transceiver: T,
41-
shutdown_token: ShutdownToken,
42-
) -> (
43-
MixTrafficController,
44-
BatchMixMessageSender,
45-
ClientRequestSender,
46-
)
41+
pub fn new<T>(gateway_transceiver: T, shutdown_token: ShutdownToken) -> MixTrafficController
4742
where
4843
T: GatewayTransceiver + Send + 'static,
4944
{
@@ -52,41 +47,30 @@ impl MixTrafficController {
5247

5348
let (client_sender, client_receiver) = tokio::sync::mpsc::channel(8);
5449

55-
(
56-
MixTrafficController {
57-
gateway_transceiver: Box::new(gateway_transceiver),
58-
mix_rx: message_receiver,
59-
client_rx: client_receiver,
60-
consecutive_gateway_failure_count: 0,
61-
shutdown_token,
62-
},
63-
message_sender,
64-
client_sender,
65-
)
50+
MixTrafficController {
51+
gateway_transceiver: Box::new(gateway_transceiver),
52+
mix_tx: message_sender,
53+
mix_rx: message_receiver,
54+
client_rx: client_receiver,
55+
client_tx: client_sender,
56+
consecutive_gateway_failure_count: 0,
57+
shutdown_token,
58+
}
6659
}
6760

6861
pub fn new_dynamic(
6962
gateway_transceiver: Box<dyn GatewayTransceiver + Send>,
7063
shutdown_token: ShutdownToken,
71-
) -> (
72-
MixTrafficController,
73-
BatchMixMessageSender,
74-
ClientRequestSender,
75-
) {
76-
let (message_sender, message_receiver) =
77-
tokio::sync::mpsc::channel(MIX_MESSAGE_RECEIVER_BUFFER_SIZE);
78-
let (client_sender, client_receiver) = tokio::sync::mpsc::channel(8);
79-
(
80-
MixTrafficController {
81-
gateway_transceiver,
82-
mix_rx: message_receiver,
83-
client_rx: client_receiver,
84-
consecutive_gateway_failure_count: 0,
85-
shutdown_token,
86-
},
87-
message_sender,
88-
client_sender,
89-
)
64+
) -> MixTrafficController {
65+
Self::new(gateway_transceiver, shutdown_token)
66+
}
67+
68+
pub fn client_tx(&self) -> ClientRequestSender {
69+
self.client_tx.clone()
70+
}
71+
72+
pub fn mix_rx(&self) -> BatchMixMessageSender {
73+
self.mix_tx.clone()
9074
}
9175

9276
async fn on_messages(
@@ -145,34 +129,26 @@ impl MixTrafficController {
145129
trace!("MixTrafficController: Received shutdown");
146130
break;
147131
}
148-
mix_packets = self.mix_rx.recv() => match mix_packets {
149-
Some(mix_packets) => {
150-
if let Err(err) = self.on_messages(mix_packets).await {
151-
error!("Failed to send sphinx packet(s) to the gateway: {err}");
152-
if self.consecutive_gateway_failure_count == MAX_FAILURE_COUNT {
153-
// Disconnect from the gateway. If we should try to re-connect
154-
// is handled at a higher layer.
155-
error!("Failed to send sphinx packet to the gateway {MAX_FAILURE_COUNT} times in a row - assuming the gateway is dead");
156-
// Do we need to handle the embedded mixnet client case
157-
// separately?
158-
break;
159-
}
132+
// mix_rx should never error out as we're holding one instance of the sender
133+
134+
Some(mix_packets) = self.mix_rx.recv() => {
135+
if let Err(err) = self.on_messages(mix_packets).await {
136+
error!("Failed to send sphinx packet(s) to the gateway: {err}");
137+
if self.consecutive_gateway_failure_count == MAX_FAILURE_COUNT {
138+
// Disconnect from the gateway. If we should try to re-connect
139+
// is handled at a higher layer.
140+
error!("Failed to send sphinx packet to the gateway {MAX_FAILURE_COUNT} times in a row - assuming the gateway is dead");
141+
// Do we need to handle the embedded mixnet client case
142+
// separately?
143+
self.shutdown_token.cancel();
144+
break;
160145
}
161-
},
162-
None => {
163-
trace!("MixTrafficController: Stopping since channel closed");
164-
break;
165-
}
166-
},
167-
client_request = self.client_rx.recv() => match client_request {
168-
Some(client_request) => {
169-
self.on_client_request(client_request).await;
170-
},
171-
None => {
172-
trace!("MixTrafficController, client request channel closed");
173-
break
174146
}
175147
},
148+
// client_rx should never error out as we're holding one instance of the sender
149+
Some(client_request) = self.client_rx.recv() => {
150+
self.on_client_request(client_request).await;
151+
}
176152
}
177153
}
178154
debug!("MixTrafficController: Exiting");

common/socks5-client-core/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ where
119119
let ClientInput {
120120
connection_command_sender,
121121
input_sender,
122+
..
122123
} = client_input;
123124

124125
let ClientOutput {

nym-api/src/support/config/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ pub struct Config {
124124
pub node_status_api: NodeStatusAPI,
125125

126126
#[serde(alias = "topology_cacher")]
127+
#[serde(default)]
127128
pub describe_cache: DescribeCache,
128129

129130
#[serde(default)]

nym-api/src/support/config/template.rs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -70,30 +70,6 @@ per_node_test_packets = {{ network_monitor.debug.per_node_test_packets }}
7070
# Path to the database file containing uptime statuses for all mixnodes and gateways.
7171
database_path = '{{ node_status_api.storage_paths.database_path }}'
7272
73-
[node_status_api.debug]
74-
75-
caching_interval = '{{ node_status_api.debug.caching_interval }}'
76-
77-
78-
##### topology cacher config options #####
79-
80-
[topology_cacher.debug]
81-
82-
caching_interval = '{{ topology_cacher.debug.caching_interval }}'
83-
84-
85-
##### circulating supply cacher config options #####
86-
87-
[circulating_supply_cacher]
88-
89-
# Specifies whether circulating supply caching service is enabled in this process.
90-
enabled = {{ circulating_supply_cacher.enabled }}
91-
92-
[circulating_supply_cacher.debug]
93-
94-
caching_interval = '{{ circulating_supply_cacher.debug.caching_interval }}'
95-
96-
9773
##### rewarding config options #####
9874
9975
[rewarding]

sdk/rust/nym-sdk/src/mixnet/client.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,6 @@ where
850850
stats_events_reporter,
851851
started_client.shutdown_handle,
852852
None,
853-
started_client.client_request_sender,
854853
started_client.forget_me,
855854
started_client.remember_me,
856855
))

sdk/rust/nym-sdk/src/mixnet/native_client.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ pub struct MixnetClient {
5858

5959
// internal state used for the `Stream` implementation
6060
_buffered: Vec<ReconstructedMessage>,
61-
pub(crate) client_request_sender: ClientRequestSender,
6261
pub(crate) forget_me: ForgetMe,
6362
pub(crate) remember_me: RememberMe,
6463
}
@@ -75,7 +74,6 @@ impl MixnetClient {
7574
stats_events_reporter: ClientStatsSender,
7675
task_handle: ShutdownTracker,
7776
packet_type: Option<PacketType>,
78-
client_request_sender: ClientRequestSender,
7977
forget_me: ForgetMe,
8078
remember_me: RememberMe,
8179
) -> Self {
@@ -90,7 +88,6 @@ impl MixnetClient {
9088
shutdown_handle: task_handle,
9189
packet_type,
9290
_buffered: Vec::new(),
93-
client_request_sender,
9491
forget_me,
9592
remember_me,
9693
}
@@ -129,7 +126,7 @@ impl MixnetClient {
129126
}
130127

131128
pub fn client_request_sender(&self) -> ClientRequestSender {
132-
self.client_request_sender.clone()
129+
self.client_input.client_request_sender.clone()
133130
}
134131

135132
/// Get the client's identity keys.
@@ -252,7 +249,12 @@ impl MixnetClient {
252249
client: self.forget_me.client(),
253250
stats: self.forget_me.stats(),
254251
};
255-
match self.client_request_sender.send(client_request).await {
252+
match self
253+
.client_input
254+
.client_request_sender
255+
.send(client_request)
256+
.await
257+
{
256258
Ok(_) => Ok(()),
257259
Err(e) => {
258260
error!("Failed to send forget me request: {e}");
@@ -265,7 +267,12 @@ impl MixnetClient {
265267
let client_request = ClientRequest::RememberMe {
266268
session_type: self.remember_me.session_type(),
267269
};
268-
match self.client_request_sender.send(client_request).await {
270+
match self
271+
.client_input
272+
.client_request_sender
273+
.send(client_request)
274+
.await
275+
{
269276
Ok(_) => Ok(()),
270277
Err(e) => {
271278
error!("Failed to send forget me request: {e}");
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,18 @@
11
build-bypass-contract:
2-
$(MAKE) -C dkg-bypass-contract build
2+
$(MAKE) -C dkg-bypass-contract build
3+
4+
5+
COSMWASM_OPTIMIZER_IMAGE ?= cosmwasm/optimizer:0.17.0
6+
COSMWASM_OPTIMIZER_PLATFORM ?= linux/amd64
7+
8+
build-bypass-contract-docker:
9+
docker volume rm nym_contracts_cache 2>/dev/null || true
10+
docker volume rm registry_cache 2>/dev/null || true
11+
docker run --rm --platform $(COSMWASM_OPTIMIZER_PLATFORM) \
12+
-v $(CURDIR)/../../..:/code \
13+
--mount type=volume,source=nym_contracts_cache,target=/target \
14+
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
15+
-e CARGO_BUILD_INCREMENTAL=false \
16+
-e RUSTFLAGS="-C target-cpu=generic -C debuginfo=0" \
17+
-e SOURCE_DATE_EPOCH=1 \
18+
$(COSMWASM_OPTIMIZER_IMAGE) "tools/internal/testnet-manager/dkg-bypass-contract"; \

tools/internal/testnet-manager/dkg-bypass-contract/src/contract.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use crate::msg::MigrateMsg;
55
use cosmwasm_schema::cw_serde;
66
use cosmwasm_std::{
77
Addr, Deps, DepsMut, Env, MessageInfo, QueryResponse, Response, StdError, StdResult, Storage,
8+
entry_point,
89
};
910
use cw_storage_plus::{Index, IndexList, IndexedMap, Item, Map, MultiIndex};
1011
use nym_coconut_dkg_common::dealer::DealerRegistrationDetails;
@@ -57,7 +58,9 @@ pub(crate) fn next_node_index(store: &mut dyn Storage) -> StdResult<NodeIndex> {
5758
#[cw_serde]
5859
pub enum EmptyMessage {}
5960

60-
#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
61+
// #[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
62+
63+
#[entry_point]
6164
pub fn instantiate(
6265
_: DepsMut<'_>,
6366
_: Env,
@@ -68,7 +71,8 @@ pub fn instantiate(
6871
}
6972

7073
/// Handle an incoming message
71-
#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
74+
// #[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
75+
#[entry_point]
7276
pub fn execute(
7377
_: DepsMut<'_>,
7478
_: Env,
@@ -78,13 +82,15 @@ pub fn execute(
7882
Ok(Response::new())
7983
}
8084

81-
#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
85+
// #[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
86+
#[entry_point]
8287
pub fn query(_: Deps<'_>, _: Env, _: EmptyMessage) -> Result<QueryResponse, StdError> {
8388
Ok(Default::default())
8489
}
8590

8691
// LIMITATION: we're not storing dealings themselves
87-
#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
92+
// #[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
93+
#[entry_point]
8894
pub fn migrate(deps: DepsMut<'_>, env: Env, msg: MigrateMsg) -> Result<Response, StdError> {
8995
// on migration immediately attempt to rewrite the storage
9096
let threshold = (2 * msg.dealers.len() as u64).div_ceil(3);

0 commit comments

Comments
 (0)