Jonas/127 replace all panics by fatal error
- Création d'un commite par
crate
- Dans
lib/core/conf
ajout de commentaire pour les fonction ne pouvant pas utiliser la macrofatal_error
car le logger n'est pas encore initialisé. - Donc les seuls endroits où la macro
panic!
est encore utilisé:- avant l'initialisation du logger (donc la macro
fatal_error
). - dans les tests (unitaire et intégration)
- dans la crate
lib/core/core
car dev en cours https://git.duniter.org/nodes/rust/duniter-rs/tree/elois/ref-core-starter
- avant l'initialisation du logger (donc la macro
$ grep -nR "panic\!(" lib | grep -v "lib/core/core"
lib/core/conf/src/lib.rs:428: KeysAlgo::Schnorr => panic!("Schnorr algo not yet supported !"),
lib/core/conf/src/lib.rs:474: None => panic!("Impossible to get user config directory !"),
lib/core/conf/src/lib.rs:481: panic!(
lib/core/conf/src/lib.rs:582: panic!("Fatal error : keypairs file wrong format : no field salt !")
lib/core/conf/src/lib.rs:585: panic!("Fatal error : keypairs file wrong format : no field password !")
lib/core/conf/src/lib.rs:594: panic!("Fatal error : keypairs file wrong format : no field salt !")
lib/core/conf/src/lib.rs:597: panic!("Fatal error : keypairs file wrong format : no field password !")
lib/core/conf/src/lib.rs:600: panic!("Fail to read keypairs file !");
lib/core/conf/src/lib.rs:603: panic!("Fail to open keypairs file !");
lib/core/conf/src/lib.rs:612: panic!(dbg!("Fatal error : fail to write default keypairs file !"))
lib/core/conf/src/lib.rs:632: panic!(dbg!("Fatal error : fail to write conf file !"))
lib/core/conf/src/lib.rs:637: panic!("Fail to read conf file !");
lib/core/conf/src/lib.rs:640: panic!("Fail to open conf file !");
lib/core/conf/src/lib.rs:646: .unwrap_or_else(|_| panic!(dbg!("Fatal error : fail to write default conf file!")));
lib/core/conf/src/lib.rs:663: .unwrap_or_else(|_| panic!(dbg!("Fatal error : fail to deserialize keypairs !")))
lib/core/conf/src/lib.rs:711: None => panic!("Impossible to get your home dir!"),
lib/tools/common-tools/src/lib.rs:42: panic!($msg);
lib/tools/common-tools/src/lib.rs:46: panic!($msg);
lib/tools/common-tools/src/lib.rs:50: panic!($fmt, $($arg)+);
lib/tools/rules-engine/src/lib.rs:301: panic!("Rule creation must be fail")
lib/tools/network-documents/src/network_head_v3.rs:249: panic!("fail to sign head v3 : {:?}", sign_result.err().unwrap())
lib/tools/network-documents/src/network_peer.rs:324: panic!("fail to sign peer card : {:?}", sign_result.err().unwrap())
lib/modules/ws2p/ws2p-messages/lib.rs:236: panic!(
lib/modules/ws2p/ws2p-messages/lib.rs:242: panic!(
lib/modules/ws2p/ws2p/tests/connection_negociation.rs:125: panic!("Not receive client controller sender");
lib/modules/ws2p/ws2p/tests/connection_negociation.rs:146: panic!("Not receive server controller sender");
lib/modules/ws2p/ws2p/tests/connection_negociation.rs:181: panic!("Receive unexpected state: {:?} !", new_state);
lib/modules/ws2p/ws2p/tests/connection_negociation.rs:183: panic!("Expect signal ChangeConnectionState, receive other !");
lib/modules/ws2p/ws2p/src/controllers/incoming_connections/mod.rs:95: panic!("Listen error: {}", e);
Merge request reports
Activity
@JonasSprenger j'ai créer la MR associée a ta branche pour le ticket #127 (closed), le process du projet c'est de créer une MR dés le début, ça permet d'avoir un espace pour discuter du développement :)
Est-ce que tu se passe bien avec ce ticket ? Rencontre tu des difficultés particulières ?
mentioned in merge request !138 (merged)
Je pense avoir fais le plus gros du travail, c'est à dire: identifier où il ne faut pas utiliser la macro
fatal_error!
.@JonasSprenger je suis en train de refondre entièrement la crate
duniter-core
danslib/core/core
pour plusiuers raisons exposés ci-après. Du coup je t'invite a discard tes changement dans cette crate car sinon on vas se retrouver avec des conflits infernauxNotamment dans le cadre de la fiabilisation du code existant je supprime les panic de la crate core pour les remplacer par des Err d'un Result. L'idée est que toutes les erreurs du core remonteront jusqu'au main qui printera l'erreur et qui décidera s'il doit arrêter le programme ou non.
Edited by Éloïsadded 12 commits
- 25bb984b - [ref] conf: add comment cannot use macro fatal_error!
- b4ea058b - [feat] tui: replace panic! by fatal_error!
- 2b71585c - [feat] crypto: replace panic! by fatal_error!
- d1cd7673 - [feat] wot: replace panic! by fatal_error!
- a9c6fbff - [feat] skeleton: replace panic! by fatal_error!
- 19e8f009 - [feat] ws2p-v1-legacy: replace panic! by fatal_error!
- a38abfdc - [feat] ws2p-messages: replace panic! by fatal_error!
- 57609c9c - [feat] dubp-documents: replace panic! by fatal_error!
- 54850294 - [feat] network-documents: replace panic! by fatal_error!
- 5f7d9439 - [feat] ws2p: replace panic! by fatal_error!
- bd153693 - [feat] blockchain-dal: replace panic! by fatal_error!
- 74196af5 - [feat] blockchain: replace panic! by fatal_error!
Toggle commit list- Resolved by Éloïs
Bon du coup clippy n'est pas content: https://git.duniter.org/nodes/rust/duniter-rs/-/jobs/21958
error: the function has a cyclomatic complexity of 42 --> lib/modules/blockchain/blockchain/src/sync/mod.rs:108:1 | 108 | / pub fn local_sync<DC: DursConfTrait>(profile_path: PathBuf, conf: &DC, sync_opts: SyncOpt) { 109 | | let SyncOpt { 110 | | source, 111 | | currency, ... | 462 | | ); 463 | | } | |_^
@librelois je vais sûrement avoir besoin d'un coup de main, pour splitter cette fonction afin de réduire ça complexité.
- Resolved by Éloïs
added 13 commits
- ab263374 - [ref] conf: add comment "cannot use macro fatal_error!"
- 198f1543 - [feat] tui: replace panic! by fatal_error!
- d935adce - [feat] crypto: replace panic! by fatal_error!
- fbeb82a9 - [feat] wot: replace panic! by fatal_error!
- 401f340c - [feat] skeleton: replace panic! by fatal_error!
- 1dce2116 - [feat] ws2p-v1-legacy: replace panic! by fatal_error!
- 2a9171a0 - [feat] ws2p-messages: replace panic! by fatal_error!
- 0eed7210 - [feat] dubp-documents: replace panic! by fatal_error!
- b428319c - [feat] network-documents: replace panic! by fatal_error!
- abebab75 - [feat] ws2p: replace panic! by fatal_error!
- e82a9218 - [feat] blockchain-dal: replace panic! by fatal_error!
- a12ca348 - [feat] blockchain: replace panic! by fatal_error!
- 04986f2e - wip
Toggle commit list- Resolved by Éloïs
@librelois Dans la même idée il faut remplacer tout les
result.expect()
etresult.unwrap()
par desresult.unwrap_or_else(fatal_error!())
, non?Ou bien créer une méthode custom car ça rajoutera beaucoup de verbosité!
Edited by Jonas SPRENGER
assigned to @librelois
added 5 commits
- b98845f1 - [feat] dubp-documents: replace panic! by fatal_error!
- 52d5bd0f - [feat] network-documents: replace panic! by fatal_error!
- b110e079 - [feat] ws2p: replace panic! by fatal_error!
- 43d3cd9a - [feat] blockchain-dal: replace panic! by fatal_error!
- 7c54f86e - [feat] blockchain: replace panic! by fatal_error!
Toggle commit listReview: OK
Félicitations @JonasSprenger ta 1ère contribution au code de Durs officiellement mergée
Merci @librelois et @JonasSprenger je suis content de voir que ma push request a aussi servi à quelque chose. :)