Merge pull request #5672 from umbraco/v8/feature/0000-avoid-too-long-locking-when-delete-content

Small fixes for backoffice under load.
This commit is contained in:
Bjarke Berg
2019-06-21 11:58:37 +02:00
committed by GitHub
2 changed files with 12 additions and 14 deletions

View File

@@ -1695,12 +1695,11 @@ namespace Umbraco.Core.Services.Implement
}
const int pageSize = 500;
var page = 0;
var total = long.MaxValue;
while (page * pageSize < total)
while (total > 0)
{
//get descendants - ordered from deepest to shallowest
var descendants = GetPagedDescendants(content.Id, page, pageSize, out total, ordering: Ordering.By("Path", Direction.Descending));
var descendants = GetPagedDescendants(content.Id, 0, pageSize, out total, ordering: Ordering.By("Path", Direction.Descending));
foreach (var c in descendants)
DoDelete(c);
}
@@ -1926,11 +1925,10 @@ namespace Umbraco.Core.Services.Implement
paths[content.Id] = (parent == null ? (parentId == Constants.System.RecycleBinContent ? "-1,-20" : Constants.System.RootString) : parent.Path) + "," + content.Id;
const int pageSize = 500;
var page = 0;
var total = long.MaxValue;
while (page * pageSize < total)
while (total > 0)
{
var descendants = GetPagedDescendantsLocked(originalPath, page++, pageSize, out total, null, Ordering.By("Path", Direction.Ascending));
var descendants = GetPagedDescendantsLocked(originalPath, 0, pageSize, out total, null, Ordering.By("Path", Direction.Ascending));
foreach (var descendant in descendants)
{
moves.Add(Tuple.Create(descendant, descendant.Path)); // capture original path

View File

@@ -229,11 +229,9 @@ function umbTreeDirective($q, $rootScope, treeService, notificationsService, use
}
/** Method to load in the tree data */
function loadTree() {
if (!$scope.loading && $scope.section) {
$scope.loading = true;
if ($scope.section) {
//default args
var args = { section: $scope.section, tree: $scope.treealias, cacheKey: $scope.cachekey, isDialog: $scope.isdialog ? $scope.isdialog : false };
@@ -244,20 +242,22 @@ function umbTreeDirective($q, $rootScope, treeService, notificationsService, use
return treeService.getTree(args)
.then(function (data) {
//Only use the tree data, if we are still on the correct section
if(data.alias !== $scope.section){
return $q.reject();
}
//set the data once we have it
$scope.tree = data;
$scope.loading = false;
//set the root as the current active tree
$scope.activeTree = $scope.tree.root;
emitEvent("treeLoaded", { tree: $scope.tree });
emitEvent("treeNodeExpanded", { tree: $scope.tree, node: $scope.tree.root, children: $scope.tree.root.children });
return $q.when(data);
}, function (reason) {
$scope.loading = false;
notificationsService.error("Tree Error", reason);
return $q.reject(reason);
});