From fb37e15ec7476be5a8c772595d613853e3e11019 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Thu, 1 Nov 2012 09:08:38 -0400 Subject: [PATCH 1/1] Fix A/T object cache Signed-off-by: Thomas Berezansky Signed-off-by: Mike Rylander --- .../lib/OpenILS/Application/Trigger/Event.pm | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm index 0f52b732cc..b0be015186 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm @@ -496,16 +496,20 @@ sub ClearObjectCache { my $phash = $_object_by_path_cache{$did}; for my $path ( keys %$phash ) { my $shash = $$phash{$path}; - for my $step ( keys %$shash ) { - my $fhash = $$shash{$step}; - for my $ffield ( keys %$fhash ) { - my $lhash = $$fhash{$ffield}; - for my $lfield ( keys %$lhash ) { - delete $$lhash{$lfield}; + for my $fhint ( keys %$shash ) { + my $hhash = $$shash{$fhint}; + for my $step ( keys %$hhash ) { + my $fhash = $$hhash{$step}; + for my $ffield ( keys %$fhash ) { + my $lhash = $$fhash{$ffield}; + for my $lfield ( keys %$lhash ) { + delete $$lhash{$lfield}; + } + delete $$fhash{$ffield}; } - delete $$fhash{$ffield}; + delete $$hhash{$step}; } - delete $$shash{$step}; + delete $$shash{$fhint}; } delete $$phash{$path}; } @@ -569,14 +573,14 @@ sub _object_by_path { my $def_id = $self->event->event_def->id; my $str_path = join('.', @$path); - $obj = $_object_by_path_cache{$def_id}{$str_path}{$step}{$ffield}{$lval} || + $obj = $_object_by_path_cache{$def_id}{$str_path}{$fhint}{$step}{$ffield}{$lval} || ( (grep /cstore/, @{ OpenILS::Application->publish_fieldmapper->{$fclass}{controller} }) ? $ed : ($red ||= new_rstore_editor(xact=>1)) )->$meth( ($multi) ? { $ffield => $lval } : $lval); - $_object_by_path_cache{$def_id}{$str_path}{$step}{$ffield}{$lval} ||= $obj; + $_object_by_path_cache{$def_id}{$str_path}{$fhint}{$step}{$ffield}{$lval} ||= $obj; } } -- 2.43.2