Skip to content

Commit b08ff76

Browse files
committed
fix: check if emissions disabled value is same before setting
Address review feedback from open-junius: - Add check to return early if the new value equals the current value - Update weight to account for additional read (2 reads total) - Add test for same value case
1 parent d914320 commit b08ff76

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

pallets/admin-utils/src/lib.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2247,7 +2247,7 @@ pub mod pallet {
22472247
#[pallet::call_index(85)]
22482248
#[pallet::weight((
22492249
Weight::from_parts(7_343_000, 0)
2250-
.saturating_add(<T as frame_system::Config>::DbWeight::get().reads(1))
2250+
.saturating_add(<T as frame_system::Config>::DbWeight::get().reads(2))
22512251
.saturating_add(<T as frame_system::Config>::DbWeight::get().writes(1)),
22522252
DispatchClass::Operational,
22532253
Pays::Yes
@@ -2262,6 +2262,12 @@ pub mod pallet {
22622262
pallet_subtensor::Pallet::<T>::if_subnet_exist(netuid),
22632263
Error::<T>::SubnetDoesNotExist
22642264
);
2265+
2266+
let current_value = pallet_subtensor::Pallet::<T>::get_emissions_disabled(netuid);
2267+
if current_value == disabled {
2268+
return Ok(());
2269+
}
2270+
22652271
pallet_subtensor::Pallet::<T>::set_emissions_disabled(netuid, disabled);
22662272
log::debug!(
22672273
"sudo_set_emissions_disabled( netuid: {netuid:?}, disabled: {disabled:?} ) "

pallets/admin-utils/src/tests/mod.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2943,3 +2943,38 @@ fn test_sudo_set_emissions_disabled_subnet_not_exist() {
29432943
);
29442944
});
29452945
}
2946+
2947+
#[test]
2948+
fn test_sudo_set_emissions_disabled_same_value() {
2949+
new_test_ext().execute_with(|| {
2950+
let netuid = NetUid::from(1);
2951+
add_network(netuid, 10);
2952+
2953+
// Default value is false
2954+
assert!(!SubtensorModule::get_emissions_disabled(netuid));
2955+
2956+
// Setting to same value (false) should succeed without changing anything
2957+
assert_ok!(AdminUtils::sudo_set_emissions_disabled(
2958+
<<Test as Config>::RuntimeOrigin>::root(),
2959+
netuid,
2960+
false
2961+
));
2962+
assert!(!SubtensorModule::get_emissions_disabled(netuid));
2963+
2964+
// Now disable emissions
2965+
assert_ok!(AdminUtils::sudo_set_emissions_disabled(
2966+
<<Test as Config>::RuntimeOrigin>::root(),
2967+
netuid,
2968+
true
2969+
));
2970+
assert!(SubtensorModule::get_emissions_disabled(netuid));
2971+
2972+
// Setting to same value (true) should succeed without changing anything
2973+
assert_ok!(AdminUtils::sudo_set_emissions_disabled(
2974+
<<Test as Config>::RuntimeOrigin>::root(),
2975+
netuid,
2976+
true
2977+
));
2978+
assert!(SubtensorModule::get_emissions_disabled(netuid));
2979+
});
2980+
}

0 commit comments

Comments
 (0)