node: reset data from settings
This commit is contained in:
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: Die Entscheidung über das Verbot trifft der Knoten auf der Grundlage der Korrektheit der von der Gegenstelle erhaltenen Daten.
|
||||
max_inbound_count: 'Maximale Anzahl der eingehenden Peer-Verbindungen:'
|
||||
max_outbound_count: 'Maximale Anzahl von ausgehenden Peer-Verbindungen:'
|
||||
reset_peers_desc: Peer-Daten zurücksetzen. Verwenden Sie diese Funktion nur, wenn es Probleme beim finden von Peers gibt.
|
||||
reset_peers: Peers zurücksetzten
|
||||
reset_data_desc: Reset-Knotendaten. Verwenden Sie diese Funktion nur, wenn es Probleme mit der Synchronisation gibt.
|
||||
reset_data: Daten zurücksetzten
|
||||
modal:
|
||||
cancel: Abbrechen
|
||||
save: Speichern
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: The decision to ban is made by node, based on the correctness of the data received from the peer.
|
||||
max_inbound_count: 'Maximum number of inbound peer connections:'
|
||||
max_outbound_count: 'Maximum number of outbound peer connections:'
|
||||
reset_peers_desc: Reset peers data. Use it with a caution only if there are problems with finding peers.
|
||||
reset_peers: Reset peers
|
||||
reset_data_desc: Reset the node data. Use it with a caution only if there are problems with synchronization.
|
||||
reset_data: Reset data
|
||||
modal:
|
||||
cancel: Cancel
|
||||
save: Save
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: La décision de bannir est prise par le noeud, en fonction de la validité des données reçues du pair.
|
||||
max_inbound_count: 'Nombre maximum de connexions de pairs entrants :'
|
||||
max_outbound_count: 'Nombre maximum de connexions de pairs sortants :'
|
||||
reset_peers_desc: Réinitialiser les données des pairs. Utilisez-le avec précaution uniquement en cas de problèmes pour trouver des pairs.
|
||||
reset_peers: Réinitialiser les pairs
|
||||
reset_data_desc: Réinitialisez les données du noeud. Utilisez-le avec prudence uniquement en cas de problème de synchronisation.
|
||||
reset_data: Réinitialisation des données
|
||||
modal:
|
||||
cancel: Annuler
|
||||
save: Sauvegarder
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: Решение о запрете принимается узлом, основываясь на корректности данных полученных от пира.
|
||||
max_inbound_count: 'Максимальное количество входящих подключений пиров:'
|
||||
max_outbound_count: 'Максимальное количество исходящих подключений к пирам:'
|
||||
reset_peers_desc: Сбросить данные пиров. Используйте с осторожностью, только при наличии проблем с поиском пиров.
|
||||
reset_peers: Сбросить пиры
|
||||
reset_data_desc: Сбросить данные узла. Используйте с осторожностью, только при наличии проблем с синхронизацией.
|
||||
reset_data: Сброс данных
|
||||
modal:
|
||||
cancel: Отмена
|
||||
save: Сохранить
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: Banlama karari, peerden alinan verilerin dogruluguna bagli olarak Node tarafindan verilir.
|
||||
max_inbound_count: 'Maksimum gelen Peer baglanti sayisi:'
|
||||
max_outbound_count: 'Maksimum giden Peer baglanti sayisi:'
|
||||
reset_peers_desc: Peers verilerini sifirlayin. Yalnizca Peers bulma konusunda sorun yasiyorsaniz dikkatli kullanin.
|
||||
reset_peers: Peers Resetle
|
||||
reset_data_desc: Node verisini sifirlama. Sadece senkronizasyonda sorun varsa dikkatli kullanin.
|
||||
reset_data: Verileri sifirlama
|
||||
modal:
|
||||
cancel: Iptal
|
||||
save: Kaydet
|
||||
|
||||
+2
-2
@@ -300,8 +300,8 @@ network_settings:
|
||||
ban_window_desc: 禁止的决定是由节点 根据从网络对点收到的数据的正确性做出的.
|
||||
max_inbound_count: '入站网络对点连接的最大数量:'
|
||||
max_outbound_count: '最大出站网络对点连接数:'
|
||||
reset_peers_desc: 重置网络对点数据。仅当查找网络对点出现问题时,才请谨慎使用它.
|
||||
reset_peers: 重置网络对点
|
||||
reset_data_desc: 重置节点数据。只有在出现同步问题时才需谨慎使用.
|
||||
reset_data: 重置数据
|
||||
modal:
|
||||
cancel: 取消
|
||||
save: 保存
|
||||
|
||||
+1
-1
Submodule node updated: f80e450896...bd63c266e2
@@ -16,7 +16,7 @@ use egui::{RichText, ScrollArea};
|
||||
use egui::scroll_area::ScrollBarVisibility;
|
||||
|
||||
use crate::gui::Colors;
|
||||
use crate::gui::icons::ARROW_COUNTER_CLOCKWISE;
|
||||
use crate::gui::icons::{ARROW_COUNTER_CLOCKWISE, TRASH};
|
||||
use crate::gui::platform::PlatformCallbacks;
|
||||
use crate::gui::views::{Modal, Content, View};
|
||||
use crate::gui::views::network::setup::{DandelionSetup, NodeSetup, P2PSetup, PoolSetup, StratumSetup};
|
||||
@@ -36,6 +36,9 @@ pub struct NetworkSettings {
|
||||
pool: PoolSetup,
|
||||
/// Dandelion server setup content.
|
||||
dandelion: DandelionSetup,
|
||||
|
||||
/// Flag to check if reset of data was called.
|
||||
data_reset: bool,
|
||||
}
|
||||
|
||||
/// Identifier for settings reset confirmation [`Modal`].
|
||||
@@ -49,6 +52,7 @@ impl Default for NetworkSettings {
|
||||
stratum: StratumSetup::default(),
|
||||
pool: PoolSetup::default(),
|
||||
dandelion: DandelionSetup::default(),
|
||||
data_reset: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -110,6 +114,15 @@ impl ContentContainer for NetworkSettings {
|
||||
// Draw Dandelion server setup section.
|
||||
self.dandelion.ui(ui, cb);
|
||||
|
||||
// Draw content to reset the data.
|
||||
if !Node::is_restarting() && !self.data_reset {
|
||||
ui.add_space(4.0);
|
||||
View::horizontal_line(ui, Colors::item_stroke());
|
||||
ui.add_space(6.0);
|
||||
|
||||
self.reset_data_ui(ui);
|
||||
}
|
||||
|
||||
ui.add_space(6.0);
|
||||
View::horizontal_line(ui, Colors::stroke());
|
||||
ui.add_space(6.0);
|
||||
@@ -179,7 +192,7 @@ impl NetworkSettings {
|
||||
}).collect::<Vec<_>>();
|
||||
|
||||
if saved_ip != selected_ip {
|
||||
(on_change)(&selected_ip.to_string());
|
||||
on_change(&selected_ip.to_string());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,37 +206,53 @@ impl NetworkSettings {
|
||||
ui.add_space(6.0);
|
||||
});
|
||||
}
|
||||
|
||||
/// Draw content to reset data.
|
||||
fn reset_data_ui(&mut self, ui: &mut egui::Ui) {
|
||||
ui.add_space(4.0);
|
||||
View::colored_text_button(ui,
|
||||
format!("{} {}", TRASH, t!("network_settings.reset_data")),
|
||||
Colors::red(),
|
||||
Colors::white_or_black(false), || {
|
||||
Node::reset_data(false);
|
||||
self.data_reset = true;
|
||||
});
|
||||
ui.add_space(6.0);
|
||||
ui.label(RichText::new(t!("network_settings.reset_data_desc"))
|
||||
.size(16.0)
|
||||
.color(Colors::inactive_text())
|
||||
);
|
||||
ui.add_space(4.0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// Draw button to reset integrated node settings to default values.
|
||||
fn reset_settings_ui(ui: &mut egui::Ui) {
|
||||
ui.vertical_centered(|ui| {
|
||||
ui.label(RichText::new(t!("network_settings.reset_settings_desc"))
|
||||
.size(16.0)
|
||||
.color(Colors::text(false)));
|
||||
ui.add_space(8.0);
|
||||
let button_text = format!("{} {}",
|
||||
ARROW_COUNTER_CLOCKWISE,
|
||||
t!("network_settings.reset_settings"));
|
||||
View::action_button(ui, button_text, || {
|
||||
// Show modal to confirm settings reset.
|
||||
Modal::new(RESET_SETTINGS_CONFIRMATION_MODAL)
|
||||
.position(ModalPosition::Center)
|
||||
.title(t!("confirmation"))
|
||||
.show();
|
||||
});
|
||||
|
||||
// Show reminder to restart enabled node.
|
||||
if Node::is_running() {
|
||||
ui.add_space(12.0);
|
||||
ui.label(RichText::new(t!("network_settings.restart_node_required"))
|
||||
.size(16.0)
|
||||
.color(Colors::gray())
|
||||
);
|
||||
}
|
||||
ui.add_space(12.0);
|
||||
ui.label(RichText::new(t!("network_settings.reset_settings_desc"))
|
||||
.size(16.0)
|
||||
.color(Colors::text(false)));
|
||||
ui.add_space(8.0);
|
||||
let button_text = format!("{} {}",
|
||||
ARROW_COUNTER_CLOCKWISE,
|
||||
t!("network_settings.reset_settings"));
|
||||
View::action_button(ui, button_text, || {
|
||||
// Show modal to confirm settings reset.
|
||||
Modal::new(RESET_SETTINGS_CONFIRMATION_MODAL)
|
||||
.position(ModalPosition::Center)
|
||||
.title(t!("confirmation"))
|
||||
.show();
|
||||
});
|
||||
|
||||
// Show reminder to restart enabled node.
|
||||
if Node::is_running() {
|
||||
ui.add_space(12.0);
|
||||
ui.label(RichText::new(t!("network_settings.restart_node_required"))
|
||||
.size(16.0)
|
||||
.color(Colors::gray())
|
||||
);
|
||||
}
|
||||
ui.add_space(10.0);
|
||||
}
|
||||
|
||||
/// Confirmation to reset settings to default values.
|
||||
|
||||
@@ -65,9 +65,6 @@ pub struct P2PSetup {
|
||||
|
||||
/// Maximum number of outbound peer connections.
|
||||
max_outbound_count: String,
|
||||
|
||||
/// Flag to check if reset of peers was called.
|
||||
peers_reset: bool,
|
||||
}
|
||||
|
||||
/// Identifier for port value [`Modal`].
|
||||
@@ -111,7 +108,6 @@ impl Default for P2PSetup {
|
||||
ban_window_edit: NodeConfig::get_p2p_ban_window(),
|
||||
max_inbound_count: NodeConfig::get_max_inbound_peers(),
|
||||
max_outbound_count: NodeConfig::get_max_outbound_peers(),
|
||||
peers_reset: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,15 +212,6 @@ impl ContentContainer for P2PSetup {
|
||||
|
||||
// Show maximum outbound peers value setup.
|
||||
self.max_outbound_ui(ui);
|
||||
|
||||
if !Node::is_restarting() && !self.peers_reset {
|
||||
ui.add_space(6.0);
|
||||
View::horizontal_line(ui, Colors::item_stroke());
|
||||
ui.add_space(6.0);
|
||||
|
||||
// Show peers data reset content.
|
||||
self.reset_peers_ui(ui);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -753,23 +740,6 @@ impl P2PSetup {
|
||||
ui.add_space(6.0);
|
||||
});
|
||||
}
|
||||
|
||||
/// Draw content to reset peers data.
|
||||
fn reset_peers_ui(&mut self, ui: &mut egui::Ui) {
|
||||
ui.add_space(4.0);
|
||||
View::colored_text_button(ui,
|
||||
format!("{} {}", TRASH, t!("network_settings.reset_peers")),
|
||||
Colors::red(),
|
||||
Colors::white_or_black(false), || {
|
||||
Node::reset_peers(false);
|
||||
self.peers_reset = true;
|
||||
});
|
||||
ui.add_space(6.0);
|
||||
ui.label(RichText::new(t!("network_settings.reset_peers_desc"))
|
||||
.size(16.0)
|
||||
.color(Colors::inactive_text())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Draw peer list item.
|
||||
|
||||
+21
-25
@@ -28,7 +28,7 @@ use grin_p2p::msg::PeerAddrs;
|
||||
use grin_p2p::Seeding;
|
||||
use grin_servers::{Server, ServerStats, StratumServerConfig, StratumStats};
|
||||
use grin_servers::common::types::Error;
|
||||
|
||||
use log::error;
|
||||
use crate::node::{NodeConfig, NodeError, PeersConfig};
|
||||
use crate::node::stratum::{StratumStopState, StratumServer};
|
||||
|
||||
@@ -57,8 +57,8 @@ pub struct Node {
|
||||
stop_needed: AtomicBool,
|
||||
/// Flag to check if app exit is needed after [`Server`] stop.
|
||||
exit_after_stop: AtomicBool,
|
||||
/// Flag to reset peers data and restart the [`Server`].
|
||||
reset_peers: AtomicBool,
|
||||
/// Flag to reset data and restart the [`Server`].
|
||||
reset_data: AtomicBool,
|
||||
/// Flag to change data directory and restart the [`Server`].
|
||||
change_data_dir: AtomicBool,
|
||||
|
||||
@@ -78,7 +78,7 @@ impl Default for Node {
|
||||
exit_after_stop: AtomicBool::new(false),
|
||||
start_stratum_needed: AtomicBool::new(false),
|
||||
error: Arc::new(RwLock::new(None)),
|
||||
reset_peers: AtomicBool::new(false),
|
||||
reset_data: AtomicBool::new(false),
|
||||
change_data_dir: AtomicBool::new(false),
|
||||
}
|
||||
}
|
||||
@@ -169,12 +169,12 @@ impl Node {
|
||||
|
||||
/// Check if [`Node`] is restarting.
|
||||
pub fn is_restarting() -> bool {
|
||||
NODE_STATE.restart_needed.load(Ordering::Relaxed) || Self::reset_peers_needed()
|
||||
NODE_STATE.restart_needed.load(Ordering::Relaxed) || Self::reset_data_needed()
|
||||
}
|
||||
|
||||
/// Check if reset of [`Server`] peers is needed.
|
||||
fn reset_peers_needed() -> bool {
|
||||
NODE_STATE.reset_peers.load(Ordering::Relaxed)
|
||||
fn reset_data_needed() -> bool {
|
||||
NODE_STATE.reset_data.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
/// Get node [`Server`] statistics.
|
||||
@@ -263,9 +263,9 @@ impl Node {
|
||||
server.stop();
|
||||
// Wait server after stop.
|
||||
thread::sleep(Duration::from_millis(5000));
|
||||
// Reset peers data if requested.
|
||||
if Self::reset_peers_needed() {
|
||||
Node::reset_peers(true);
|
||||
// Reset data if requested.
|
||||
if Self::reset_data_needed() {
|
||||
Node::reset_data(true);
|
||||
}
|
||||
// Reset stratum stats.
|
||||
{
|
||||
@@ -279,7 +279,7 @@ impl Node {
|
||||
NODE_STATE.restart_needed.store(false, Ordering::Relaxed);
|
||||
}
|
||||
Err(e) => {
|
||||
// Set an error.
|
||||
error!("Error starting node: {:?}", e);
|
||||
{
|
||||
let mut w_err = NODE_STATE.error.write();
|
||||
*w_err = Some(e);
|
||||
@@ -333,7 +333,7 @@ impl Node {
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
// Set an error.
|
||||
error!("Error starting node: {:?}", e);
|
||||
{
|
||||
let mut w_err = NODE_STATE.error.write();
|
||||
*w_err = Some(e);
|
||||
@@ -428,24 +428,20 @@ impl Node {
|
||||
}
|
||||
}
|
||||
|
||||
/// Reset [`Server`] peers data.
|
||||
pub fn reset_peers(force: bool) {
|
||||
/// Reset [`Server`] data.
|
||||
pub fn reset_data(force: bool) {
|
||||
if force || !Node::is_running() {
|
||||
// Get saved server config.
|
||||
let config = NodeConfig::node_server_config();
|
||||
let server_config = config.server.clone();
|
||||
// Remove peers folder.
|
||||
let mut peers_dir = PathBuf::from(&server_config.db_root);
|
||||
peers_dir.push("peer");
|
||||
if peers_dir.exists() {
|
||||
match fs::remove_dir_all(peers_dir) {
|
||||
Ok(_) => {}
|
||||
Err(_) => {}
|
||||
}
|
||||
// Remove data folder.
|
||||
let data_dir = PathBuf::from(&server_config.db_root);
|
||||
match fs::remove_dir_all(data_dir) {
|
||||
Ok(_) => {}
|
||||
Err(_) => {}
|
||||
}
|
||||
NODE_STATE.reset_peers.store(false, Ordering::Relaxed);
|
||||
NODE_STATE.reset_data.store(false, Ordering::Relaxed);
|
||||
} else {
|
||||
NODE_STATE.reset_peers.store(true, Ordering::Relaxed);
|
||||
NODE_STATE.reset_data.store(true, Ordering::Relaxed);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user