mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-25 06:45:43 +03:00
Fix database deadlock when update issue labels (#17649)
This fix updates issue labels one by one, and won't cause database deadlock. In future, we can use a batch API to update all changed labels by one request.
This commit is contained in:
parent
3a60e0ad89
commit
6292603215
2 changed files with 22 additions and 26 deletions
|
@ -332,20 +332,16 @@ export function initRepoIssueWipTitle() {
|
|||
});
|
||||
}
|
||||
|
||||
export function updateIssuesMeta(url, action, issueIds, elementId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url,
|
||||
data: {
|
||||
_csrf: csrfToken,
|
||||
action,
|
||||
issue_ids: issueIds,
|
||||
id: elementId,
|
||||
},
|
||||
success: resolve,
|
||||
error: reject,
|
||||
});
|
||||
export async function updateIssuesMeta(url, action, issueIds, elementId) {
|
||||
return $.ajax({
|
||||
type: 'POST',
|
||||
url,
|
||||
data: {
|
||||
_csrf: csrfToken,
|
||||
action,
|
||||
issue_ids: issueIds,
|
||||
id: elementId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -84,18 +84,18 @@ export function initRepoCommentForm() {
|
|||
$(`.${selector}`).dropdown('setting', 'onHide', () => {
|
||||
hasUpdateAction = $listMenu.data('action') === 'update'; // Update the var
|
||||
if (hasUpdateAction) {
|
||||
const promises = [];
|
||||
Object.keys(items).forEach((elementId) => {
|
||||
const item = items[elementId];
|
||||
const promise = updateIssuesMeta(
|
||||
item['update-url'],
|
||||
item.action,
|
||||
item['issue-id'],
|
||||
elementId,
|
||||
);
|
||||
promises.push(promise);
|
||||
});
|
||||
Promise.all(promises).then(() => window.location.reload());
|
||||
// TODO: Add batch functionality and make this 1 network request.
|
||||
(async function() {
|
||||
for (const [elementId, item] of Object.entries(items)) {
|
||||
await updateIssuesMeta(
|
||||
item['update-url'],
|
||||
item.action,
|
||||
item['issue-id'],
|
||||
elementId,
|
||||
);
|
||||
}
|
||||
window.location.reload();
|
||||
})();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue