This commit is contained in:
2024-10-14 00:08:40 +02:00
parent dbfba56f66
commit 1462d52e13
4572 changed files with 2658864 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::System::Console::Command::Maint::Ticket::EscalationIndexRebuild;
use strict;
use warnings;
use Time::HiRes();
use parent qw(Kernel::System::Console::BaseCommand);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Ticket',
);
sub Configure {
my ( $Self, %Param ) = @_;
$Self->Description('Completely rebuild the ticket escalation index.');
$Self->AddOption(
Name => 'micro-sleep',
Description => "Specify microseconds to sleep after every ticket to reduce system load (e.g. 1000).",
Required => 0,
HasValue => 1,
ValueRegex => qr/^\d+$/smx,
);
return;
}
sub Run {
my ( $Self, %Param ) = @_;
$Self->Print("<yellow>Rebuilding ticket escalation index...</yellow>\n");
# disable ticket events
$Kernel::OM->Get('Kernel::Config')->{'Ticket::EventModulePost'} = {};
# get all tickets
my @TicketIDs = $Kernel::OM->Get('Kernel::System::Ticket')->TicketSearch(
Result => 'ARRAY',
Limit => 100_000_000,
UserID => 1,
Permission => 'ro',
);
my $Count = 0;
my $MicroSleep = $Self->GetOption('micro-sleep');
TICKETID:
for my $TicketID (@TicketIDs) {
$Count++;
$Kernel::OM->Get('Kernel::System::Ticket')->TicketEscalationIndexBuild(
TicketID => $TicketID,
UserID => 1,
);
if ( $Count % 2000 == 0 ) {
my $Percent = int( $Count / ( $#TicketIDs / 100 ) );
$Self->Print(
"<yellow>$Count</yellow> of <yellow>$#TicketIDs</yellow> processed (<yellow>$Percent %</yellow> done).\n"
);
}
Time::HiRes::usleep($MicroSleep) if $MicroSleep;
}
$Self->Print("<green>Done.</green>\n");
return $Self->ExitCodeOk();
}
1;