addl debug
This commit is contained in:
parent
0625e7f091
commit
745ac91522
2 changed files with 30 additions and 6 deletions
|
@ -56,7 +56,7 @@ impl ExecBodyParams {
|
||||||
let curr_act = Arc::clone(&self.curr_act);
|
let curr_act = Arc::clone(&self.curr_act);
|
||||||
let parent_act_lock = curr_act.read().await;
|
let parent_act_lock = curr_act.read().await;
|
||||||
let act = &(*parent_act_lock);
|
let act = &(*parent_act_lock);
|
||||||
match act {
|
let out = match act {
|
||||||
BotAction::C(_) => {
|
BotAction::C(_) => {
|
||||||
// let temp = c.module.clone();
|
// let temp = c.module.clone();
|
||||||
// Some(temp)
|
// Some(temp)
|
||||||
|
@ -72,10 +72,20 @@ impl ExecBodyParams {
|
||||||
// let temp = r.module.clone();
|
// let temp = r.module.clone();
|
||||||
// Some(temp)
|
// Some(temp)
|
||||||
dbg!("Core > ExecBodyParams > GetChannels - routine identified");
|
dbg!("Core > ExecBodyParams > GetChannels - routine identified");
|
||||||
Some(r.read().await.channel.clone())
|
dbg!(">> BotActionAR - RwLock from botmodules.rs::929:46 - current_readers = 1 ");
|
||||||
|
dbg!(">> RoutineAR - RwLock from botmodules.rs::1261:32 - current_readers = 1");
|
||||||
|
dbg!(">> join_handle - RwLock from botmodules.rs::1226:46 - current_readers = 0");
|
||||||
|
dbg!(">> BotInstanceAR - RwLock from botinstance.rs::150:28 - current_readers = 3 ");
|
||||||
|
// => 03.30 - Just before deadlock
|
||||||
|
let out = Some(r.read().await.channel.clone());
|
||||||
|
|
||||||
|
// => 03.30 - This isn't reached because of the Deadlock
|
||||||
|
dbg!(">> Just after Potential Deadlock Lock");
|
||||||
|
out
|
||||||
}
|
}
|
||||||
// _ => None
|
// _ => None
|
||||||
}
|
};
|
||||||
|
out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1221,9 +1221,11 @@ impl Routine {
|
||||||
{ // Recommendation to ensure a clean update is to use one write() lock that was awaited
|
{ // Recommendation to ensure a clean update is to use one write() lock that was awaited
|
||||||
// - We can isolate the write lock by ensuring it's in it's own block
|
// - We can isolate the write lock by ensuring it's in it's own block
|
||||||
|
|
||||||
let mut lock = trg_routine_arout.write().await;
|
// => 03.30 - involved with Problem Deadlock Current Readers = 0
|
||||||
|
let mut lock = trg_routine_arout.write().await;
|
||||||
lock.join_handle = Some(Arc::new(RwLock::new(join_handle)));
|
lock.join_handle = Some(Arc::new(RwLock::new(join_handle)));
|
||||||
lock.internal_signal = RoutineSignal::Started;
|
lock.internal_signal = RoutineSignal::Started;
|
||||||
|
drop(lock); // => 03.30 - added this to try to address Deadlock issue
|
||||||
|
|
||||||
}
|
}
|
||||||
trg_routine_arout.write().await.internal_signal = RoutineSignal::Started;
|
trg_routine_arout.write().await.internal_signal = RoutineSignal::Started;
|
||||||
|
@ -1236,6 +1238,11 @@ impl Routine {
|
||||||
// (routine.exec_body)(params).await;
|
// (routine.exec_body)(params).await;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// fn (){
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
async fn loopbody(&mut self)
|
async fn loopbody(&mut self)
|
||||||
// [x] => 03.27 - COMPLETED
|
// [x] => 03.27 - COMPLETED
|
||||||
{
|
{
|
||||||
|
@ -1248,14 +1255,18 @@ impl Routine {
|
||||||
);
|
);
|
||||||
|
|
||||||
Log::flush();
|
Log::flush();
|
||||||
|
|
||||||
let self_ar = Arc::new(RwLock::new(self));
|
// => 03.30 - involved with Problem Deadlock Current Readers = 1
|
||||||
|
// - Below self appears to be a Arc<RwLock<&mut Routine>>
|
||||||
|
let self_ar = Arc::new(RwLock::new(self));
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut mutlock = self_ar.write().await;
|
let mut mutlock = self_ar.write().await;
|
||||||
|
|
||||||
mutlock.parent_params.parent_act = Some(mutlock.parent_params.curr_act.clone());
|
mutlock.parent_params.parent_act = Some(mutlock.parent_params.curr_act.clone());
|
||||||
mutlock.parent_params.curr_act = mutlock.self_act_ar.to_owned().unwrap();
|
mutlock.parent_params.curr_act = mutlock.self_act_ar.to_owned().unwrap();
|
||||||
|
drop(mutlock); // => 03.30 - Added to address Deadlock issue
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg!("Core > Before Guards");
|
dbg!("Core > Before Guards");
|
||||||
|
@ -1275,6 +1286,9 @@ impl Routine {
|
||||||
};
|
};
|
||||||
|
|
||||||
dbg!("Core > Guarding & Executing Child Execution Body");
|
dbg!("Core > Guarding & Executing Child Execution Body");
|
||||||
|
dbg!(">> BotActionAR - RwLock from botmodules.rs::929:46 - current_readers = 0 ");
|
||||||
|
dbg!(">> RoutineAR - RwLock from botmodules.rs::1261:32 - current_readers = Not Listed");
|
||||||
|
dbg!(">> BotInstanceAR - RwLock from botinstance.rs::150:28 - current_readers = 3 ");
|
||||||
|
|
||||||
{
|
{
|
||||||
let guard2 = self_ar.read().await;
|
let guard2 = self_ar.read().await;
|
||||||
|
|
Loading…
Reference in a new issue