Index: openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl,v diff -u -N -r1.41.2.22 -r1.41.2.23 --- openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 11 May 2020 19:12:54 -0000 1.41.2.22 +++ openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 18 May 2020 21:13:20 -0000 1.41.2.23 @@ -422,22 +422,16 @@ PackageMgr ad_proc get_package_class_from_package_key {package_key} { Obtain the package class from a package key } { - set key ::xo::package_class($package_key) - if {[info exists $key]} {return [set $key]} - - foreach p [::xo::PackageMgr allinstances] { - # Sanity check for old apps, having not set the package key. - # TODO: remove this in future versions, when package_keys are enforced - #if {![$p exists package_key]} { - # ns_log notice "!!! You should provide a package_key for $p [$p info class] !!!" - # continue - #} - if {[$p package_key] eq $package_key} { - return [set $key $p] + return [acs::per_thread_cache eval -key xo:get_package_class_from_package_key($package_key) { + set result "" + foreach p [::xo::PackageMgr allinstances] { + if {[$p package_key] eq $package_key} { + set result $p + break + } } - } - - return "" + set result + }] } PackageMgr ad_instproc require {{-url ""} package_id} {