Clear upload locks on timeout

This commit is contained in:
Vishnu Mohandas 2021-05-07 23:14:19 +05:30
parent 55decd001c
commit ef808e764e

View file

@ -172,12 +172,7 @@ Future<bool> _isRunningInForeground() async {
void _scheduleBGTaskKill(String taskId) async {
if (await _isRunningInForeground()) {
_logger.info("Found app in FG, committing seppuku.");
await UploadLocksDB.instance.releaseLocksAcquiredByOwnerBefore(
ProcessType.background.toString(),
DateTime.now().microsecondsSinceEpoch);
final prefs = await SharedPreferences.getInstance();
prefs.remove(kLastBGTaskHeartBeatTime);
BackgroundFetch.finish(taskId);
await _killBGTask(taskId);
return;
}
Future.delayed(kHeartBeatFrequency, () async {
@ -185,6 +180,15 @@ void _scheduleBGTaskKill(String taskId) async {
});
}
Future<void> _killBGTask(String taskId) async {
await UploadLocksDB.instance.releaseLocksAcquiredByOwnerBefore(
ProcessType.background.toString(),
DateTime.now().microsecondsSinceEpoch);
final prefs = await SharedPreferences.getInstance();
prefs.remove(kLastBGTaskHeartBeatTime);
BackgroundFetch.finish(taskId);
}
class EnteApp extends StatelessWidget with WidgetsBindingObserver {
static const _homeWidget = const HomeWidget();
@ -224,7 +228,8 @@ class EnteApp extends StatelessWidget with WidgetsBindingObserver {
), (String taskId) async {
await _runInBackground(taskId);
}, (taskId) {
BackgroundFetch.finish(taskId);
_logger.info("BG task timeout");
_killBGTask(taskId);
}).then((int status) {
_logger.info('[BackgroundFetch] configure success: $status');
}).catchError((e) {