mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-20 21:33:27 -07:00
WebUI: Prevent excessive sync requests
Don't sync main data if a request to do so is already in progress. This prevents piling up of requests and bogging down slow/busy machines, since the current implementation of `/api/v2/sync/maindata` is very computationally intensive, especially with lots of torrents. Everything gets updated on the next scheduled request anyway (via the timeout mechanism).
This commit is contained in:
parent
0b055d8fef
commit
d4f49c3666
1 changed files with 18 additions and 10 deletions
|
@ -41,6 +41,7 @@ var queueing_enabled = true;
|
||||||
var serverSyncMainDataInterval = 1500;
|
var serverSyncMainDataInterval = 1500;
|
||||||
var customSyncMainDataInterval = null;
|
var customSyncMainDataInterval = null;
|
||||||
|
|
||||||
|
let syncRequestInProgress = false;
|
||||||
var clipboardEvent;
|
var clipboardEvent;
|
||||||
|
|
||||||
var CATEGORIES_ALL = 1;
|
var CATEGORIES_ALL = 1;
|
||||||
|
@ -334,7 +335,7 @@ window.addEvent('load', function() {
|
||||||
var syncMainData = function() {
|
var syncMainData = function() {
|
||||||
var url = new URI('api/v2/sync/maindata');
|
var url = new URI('api/v2/sync/maindata');
|
||||||
url.setData('rid', syncMainDataLastResponseId);
|
url.setData('rid', syncMainDataLastResponseId);
|
||||||
new Request.JSON({
|
const request = new Request.JSON({
|
||||||
url: url,
|
url: url,
|
||||||
noCache: true,
|
noCache: true,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
@ -342,8 +343,8 @@ window.addEvent('load', function() {
|
||||||
var errorDiv = $('error_div');
|
var errorDiv = $('error_div');
|
||||||
if (errorDiv)
|
if (errorDiv)
|
||||||
errorDiv.set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
|
errorDiv.set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
|
||||||
clearTimeout(syncMainDataTimer);
|
syncRequestInProgress = false;
|
||||||
syncMainDataTimer = syncMainData.delay(2000);
|
syncData(2000);
|
||||||
},
|
},
|
||||||
onSuccess: function(response) {
|
onSuccess: function(response) {
|
||||||
$('error_div').set('html', '');
|
$('error_div').set('html', '');
|
||||||
|
@ -426,18 +427,26 @@ window.addEvent('load', function() {
|
||||||
// re-select previously selected rows
|
// re-select previously selected rows
|
||||||
torrentsTable.reselectRows(torrentsTableSelectedRows);
|
torrentsTable.reselectRows(torrentsTableSelectedRows);
|
||||||
}
|
}
|
||||||
clearTimeout(syncMainDataTimer);
|
syncRequestInProgress = false;
|
||||||
syncMainDataTimer = syncMainData.delay(getSyncMainDataInterval());
|
syncData(getSyncMainDataInterval())
|
||||||
}
|
}
|
||||||
}).send();
|
});
|
||||||
|
syncRequestInProgress = true;
|
||||||
|
request.send();
|
||||||
};
|
};
|
||||||
|
|
||||||
updateMainData = function() {
|
updateMainData = function() {
|
||||||
torrentsTable.updateTable();
|
torrentsTable.updateTable();
|
||||||
clearTimeout(syncMainDataTimer);
|
syncData(100);
|
||||||
syncMainDataTimer = syncMainData.delay(100);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const syncData = function(delay) {
|
||||||
|
if (!syncRequestInProgress){
|
||||||
|
clearTimeout(syncMainDataTimer);
|
||||||
|
syncMainDataTimer = syncMainData.delay(delay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var processServerState = function() {
|
var processServerState = function() {
|
||||||
var transfer_info = friendlyUnit(serverState.dl_info_speed, true);
|
var transfer_info = friendlyUnit(serverState.dl_info_speed, true);
|
||||||
if (serverState.dl_rate_limit > 0)
|
if (serverState.dl_rate_limit > 0)
|
||||||
|
@ -607,8 +616,7 @@ window.addEvent('load', function() {
|
||||||
$("mainColumn").removeClass("invisible");
|
$("mainColumn").removeClass("invisible");
|
||||||
|
|
||||||
customSyncMainDataInterval = null;
|
customSyncMainDataInterval = null;
|
||||||
clearTimeout(syncMainDataTimer);
|
syncData(100);
|
||||||
syncMainDataTimer = syncMainData.delay(100);
|
|
||||||
|
|
||||||
hideSearchTab();
|
hideSearchTab();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue