MT#63706 skip_locked for DELETE /api/subscriber/id

while acquiring locks is skipped nowadays for
collections eg. a GET /api/subscribers/, timeouts
were still reported for individual DELETE /api/subscriber/id
requests.

this change adds logic to skip acquiring locks for
DELETE /api/subscribers. there is also a fix to make
GET /api/subscribers/id and GET /api/subsriberpreferences/id
work.

Change-Id: Ie71abecd1f8387b9f56e8e0a47a5f1b16a6f308d
(cherry picked from commit 2a5bd4c409)
mr12.5
Rene Krenn 4 months ago committed by Kirill Solomko
parent 3f2b406c85
commit ba8d64e746

@ -261,7 +261,8 @@ sub DELETE :Allow {
my $_resource = $self->resource_from_item($c, $subscriber, $_form);
return $self->hal_from_item($c,$subscriber,$_resource,$_form); });
NGCP::Panel::Utils::Subscriber::terminate(c => $c, subscriber => $subscriber);
NGCP::Panel::Utils::Subscriber::terminate(c => $c, subscriber => $subscriber,
skip_locked => ($c->request->header('X-Delay-Commit') ? 0 : 1),);
$guard->commit;

@ -55,12 +55,12 @@ use constant API_DEFAULT_TOPUP_REQUEST_TOKEN => 'api';
sub get_contract_balance {
my %params = @_;
my($c,$contract,$now,$schema,$stime,$etime) = @params{qw/c contract now schema stime etime/};
my($c,$contract,$now,$schema,$stime,$etime,$skip_locked) = @params{qw/c contract now schema stime etime skip_locked/};
#$schema //= $c->model('DB');
$now //= NGCP::Panel::Utils::DateTime::current_local;
my $balance = catchup_contract_balances(c => $c, contract => $contract, now => $now);
my $balance = catchup_contract_balances(c => $c, contract => $contract, now => $now, skip_locked => $skip_locked);
if (defined $stime || defined $etime) { #supported for backward compat only
$balance = $contract->contract_balances->search({

@ -1796,7 +1796,7 @@ sub terminate {
$schema->txn_do(sub {
NGCP::Panel::Utils::Contract::acquire_contract_rowlocks(
c => $c, schema => $schema, contract_id => $subscriber->contract->id);
c => $c, schema => $schema, contract_id => $subscriber->contract->id, skip_locked => $params{skip_locked} );
my $prov_subscriber = $subscriber->provisioning_voip_subscriber;

Loading…
Cancel
Save