Improve rebuildLineage.pl behavior
This commit is contained in:
parent
2bad2ecab2
commit
9606b7f1a3
2 changed files with 15 additions and 6 deletions
|
|
@ -1,4 +1,5 @@
|
|||
7.5.1
|
||||
- improve rebuildLineage.pl behavior. protect against assets that are too deep and don't destroy search index.
|
||||
- fix: CalendarUpdateFeeds workflow causes errors in log
|
||||
- rfe: maintenance - turn on/off maintenance mode from the command line
|
||||
- Slight performance increase in asset queries.
|
||||
|
|
|
|||
|
|
@ -89,9 +89,8 @@ if ($orphansFound) {
|
|||
} else {
|
||||
print "No orphans found.\n" unless ($quiet);
|
||||
}
|
||||
print "\nRewriting existing lineage...\n" unless ($quiet);
|
||||
$session->db->write("update asset set lineage=concat('old___',lineage)");
|
||||
my ($lineage) = $session->db->quickArray("select lineage from asset where assetId='PBasset000000000000001'");
|
||||
print "\nDisabling constraints on lineage...\n" unless ($quiet);
|
||||
$session->db->write("drop index `lineage` on `asset`");
|
||||
|
||||
print "Rebuilding lineage...\n" unless ($quiet);
|
||||
my ($oldRootLineage) = $session->db->quickArray("select lineage from asset where assetId='PBasset000000000000001'");
|
||||
|
|
@ -99,6 +98,10 @@ printChange("Asset ID","Old Lineage","New Lineage");
|
|||
printChange('PBasset000000000000001',$oldRootLineage,'000001');
|
||||
$session->db->write("update asset set lineage='000001' where assetId='PBasset000000000000001'");
|
||||
recurseAndFixTree("PBasset000000000000001","000001");
|
||||
print "\nRe-enabling constraints on lineage...\n" unless ($quiet);
|
||||
$session->db->write("create unique index `lineage` on `asset` (`lineage`)");
|
||||
print "\nRepairing search index...\n" unless ($quiet);
|
||||
$session->db->write("update assetIndex inner join asset on asset.assetId=assetIndex.assetId set assetIndex.lineage=asset.lineage");
|
||||
|
||||
print "Cleaning up..." unless ($quiet);
|
||||
$session->var->end;
|
||||
|
|
@ -110,15 +113,20 @@ print "\nDon't forget to clear your cache.\n" unless ($quiet);
|
|||
|
||||
sub getDescendants {
|
||||
my $parentId = shift;
|
||||
if (isIn($parentId, @found)) {
|
||||
my $depth = shift || 0;
|
||||
if (isIn($parentId, @found)) {
|
||||
print "\nFound circular relationships involving $parentId. This requires manual intervention.\n" unless ($quiet);
|
||||
exit;
|
||||
}
|
||||
if (++$depth > 42) {
|
||||
print "\nFound asset greater than 42 levels deep: $parentId. This requires manual intervention.\n" unless ($quiet);
|
||||
exit;
|
||||
}
|
||||
push(@found, $parentId);
|
||||
my $getChildren = $session->db->prepare("select assetId, lineage from asset where parentId=? order by lineage");
|
||||
$getChildren->execute([$parentId]);
|
||||
while (my ($assetId) = $getChildren->array) {
|
||||
getDescendants($assetId);
|
||||
getDescendants($assetId, $depth);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,6 +150,6 @@ sub printChange {
|
|||
my $assetId = shift;
|
||||
my $oldLineage = shift;
|
||||
my $newLineage = shift;
|
||||
print sprintf("%-25s",$assetId).sprintf("%-51s",$oldLineage).sprintf("%-51s",$newLineage)."\n" unless ($quiet);
|
||||
print sprintf("%-25s",$assetId).sprintf("%-51s",$oldLineage).$newLineage."\n" unless ($quiet);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue