Bug 32894: Remove wrong caching from Koha:: methods - simple
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 28 Feb 2023 15:11:38 +0000 (16:11 +0100)
committerTomas Cohen Arazi <tomascohen@theke.io>
Wed, 7 Jun 2023 19:44:03 +0000 (16:44 -0300)
commit68216c541bfd9b5baf5e3fe97c0a99d193dfccce
tree331c489b9dd78231a6f2cbda212ca844ef65a37c
parent001160975702177e2568cb25cab6016abb7864ac
Bug 32894: Remove wrong caching from Koha:: methods - simple

In some of our Koha:: objects we have methods that cache their result and return it in subsequent calls. However there is no invalidation of the cache if the object is modified.

For instance, in Koha/ArticleRequest.pm

sub biblio {
    my ($self) = @_;

    $self->{_biblio} ||= Koha::Biblios->find( $self->biblionumber() );

    return $self->{_biblio};
}

This pattern exists in several places.

It can lead to confusion and incorrect results, such as:

use Koha::ArticleRequests;
my $ar = Koha::ArticleRequest->new({
    borrowernumber => 42,
    biblionumber => 42,
})->store;
say $ar->biblio->biblionumber;               # Display 42, correct
$ar->set({ biblionumber => 24 })->store;
say $ar->biblio->biblionumber;               # Display 42, wrong
$ar->discard_changes;
say $ar->biblio->biblionumber;               # Display 42, wrong
$ar->delete;

We should remove those caching and rely on DBIC/DBMS caching mechanism instead.

This patch is adjusting the trivial occurrences

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Koha/Account/Line.pm
Koha/ArticleRequest.pm
Koha/Biblio.pm
Koha/CirculationRule.pm
Koha/Hold.pm
Koha/Library/Group.pm
Koha/Object/Limit/Library.pm
Koha/Virtualshelf.pm
Koha/Virtualshelfshare.pm