From 3e7f6f8bdf1c11b557df000c22d6809cc8e62698 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Thu, 1 Nov 2012 09:08:38 -0400 Subject: [PATCH] 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 1aca73e0a0..5641d69f4a 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/, @{ Fieldmapper->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.11.0