fix(sessions): untie serialization interval from session read interval (#2951)
This commit is contained in:
parent
931e11f996
commit
d84201aefa
1 changed files with 27 additions and 10 deletions
|
|
@ -78,7 +78,8 @@ impl From<&BackgroundJob> for BackgroundJobContext {
|
||||||
|
|
||||||
static FLASH_DURATION_MS: u64 = 1000;
|
static FLASH_DURATION_MS: u64 = 1000;
|
||||||
static PLUGIN_ANIMATION_OFFSET_DURATION_MD: u64 = 500;
|
static PLUGIN_ANIMATION_OFFSET_DURATION_MD: u64 = 500;
|
||||||
static SESSION_READ_DURATION: u64 = 60000;
|
static SESSION_READ_DURATION: u64 = 1000;
|
||||||
|
static DEFAULT_SERIALIZATION_INTERVAL: u64 = 60000;
|
||||||
|
|
||||||
pub(crate) fn background_jobs_main(
|
pub(crate) fn background_jobs_main(
|
||||||
bus: Bus<BackgroundJob>,
|
bus: Bus<BackgroundJob>,
|
||||||
|
|
@ -90,6 +91,7 @@ pub(crate) fn background_jobs_main(
|
||||||
let current_session_name = Arc::new(Mutex::new(String::default()));
|
let current_session_name = Arc::new(Mutex::new(String::default()));
|
||||||
let current_session_info = Arc::new(Mutex::new(SessionInfo::default()));
|
let current_session_info = Arc::new(Mutex::new(SessionInfo::default()));
|
||||||
let current_session_layout = Arc::new(Mutex::new((String::new(), BTreeMap::new())));
|
let current_session_layout = Arc::new(Mutex::new((String::new(), BTreeMap::new())));
|
||||||
|
let last_serialization_time = Arc::new(Mutex::new(Instant::now()));
|
||||||
let serialization_interval = serialization_interval.map(|s| s * 1000); // convert to
|
let serialization_interval = serialization_interval.map(|s| s * 1000); // convert to
|
||||||
// milliseconds
|
// milliseconds
|
||||||
|
|
||||||
|
|
@ -165,6 +167,7 @@ pub(crate) fn background_jobs_main(
|
||||||
let current_session_info = current_session_info.clone();
|
let current_session_info = current_session_info.clone();
|
||||||
let current_session_name = current_session_name.clone();
|
let current_session_name = current_session_name.clone();
|
||||||
let current_session_layout = current_session_layout.clone();
|
let current_session_layout = current_session_layout.clone();
|
||||||
|
let last_serialization_time = last_serialization_time.clone();
|
||||||
async move {
|
async move {
|
||||||
loop {
|
loop {
|
||||||
let current_session_name =
|
let current_session_name =
|
||||||
|
|
@ -185,11 +188,20 @@ pub(crate) fn background_jobs_main(
|
||||||
session_infos_on_machine,
|
session_infos_on_machine,
|
||||||
resurrectable_sessions,
|
resurrectable_sessions,
|
||||||
));
|
));
|
||||||
let _ = senders.send_to_screen(ScreenInstruction::DumpLayoutToHd);
|
if last_serialization_time
|
||||||
task::sleep(std::time::Duration::from_millis(
|
.lock()
|
||||||
serialization_interval.unwrap_or(SESSION_READ_DURATION),
|
.unwrap()
|
||||||
))
|
.elapsed()
|
||||||
.await;
|
.as_millis()
|
||||||
|
>= serialization_interval
|
||||||
|
.unwrap_or(DEFAULT_SERIALIZATION_INTERVAL)
|
||||||
|
.into()
|
||||||
|
{
|
||||||
|
let _ = senders.send_to_screen(ScreenInstruction::DumpLayoutToHd);
|
||||||
|
*last_serialization_time.lock().unwrap() = Instant::now();
|
||||||
|
}
|
||||||
|
task::sleep(std::time::Duration::from_millis(SESSION_READ_DURATION))
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -421,10 +433,15 @@ fn find_resurrectable_sessions(
|
||||||
{
|
{
|
||||||
Ok(created) => Some(created),
|
Ok(created) => Some(created),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!(
|
if e.kind() != std::io::ErrorKind::NotFound {
|
||||||
"Failed to read created stamp of resurrection file: {:?}",
|
// let's not spam the
|
||||||
e
|
// logs if serialization
|
||||||
);
|
// is disabled
|
||||||
|
log::error!(
|
||||||
|
"Failed to read created stamp of resurrection file: {:?}",
|
||||||
|
e
|
||||||
|
);
|
||||||
|
}
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue