• last updated 13 hours ago
Constraints: committers
Constraints: files
Constraints: dates
fix typo

  1. … 1 more file in changeset.
site-nodes cache reform: use ns_urlsspace instead of brute-force caching.

For OpenACS site with recent versions of NaviServer and XOTcl2,

cache sitenode information much more efficiently by the built-in

URL trie, which supports tree match operations, for

tree information. This means that for example for .vuh

handlers it is not necessary to cache the full url for

obtaining the site-node, like it was until now:

3839 id-/storage/view/installers/windows-installer/installer.htm

3839 id-/storage/view/aolserver/install.tgz

3839 id-/storage/view/tutorial/OpenACS_Tutorial.htm

3839 id-/storage/view/openacs-dotlrn-conference-2007-spring/Methodology_ALPE.pdf

3839 id-/storage/view/xowiki-resources/Assessment.jpg

3839 id-/storage/view/tutorial-page-map.png


Providing a single entry like

ns_urlspace set -key sitenode /storage/* 3839

is sufficient.

Why is this needed: current cache sizes of larger sites show 330K

(site A) and 390K (site B) cache entries. Matchbase flushes have to

gor thhrough all these entries, causing long lock times. Running

thhis code at OpenACS.org shows an improvement by a factor of more

than 200x.

  1. … 1 more file in changeset.
Revert massive replacement of empty list creation sentences. The use of '[list]' instead of '{}' adds semantics that could be used for performance improvements in the future, such as using a different internal representation. There is already work in this direction, avoiding the generation of the string representation during comparison of empty strings (huge thanks to Stefan Sobernig for the pointer: https://core.tcl.tk/tcl/info/44527c632ed609c2).

  1. … 475 more files in changeset.
Prefer '{}' to '[list]' when creating empty lists

  1. … 71 more files in changeset.
Remove extra line

Prefer 'in' and 'ni' operators over lsearch for testing list containment

  1. … 3 more files in changeset.
Mark procs as deprecated, which were previously just documented as

deprecated and document recommended versions via @see. These procs

should be moved to *deprecated*.tcl after a while to give people

a chance to react (maybe in 5.11 or 5.12).

site_node::conn_url -> ad_conn

site_nodes_sync -> site_node::init_cache

site_node_id -> site_node::get_node_id -url

site_map_unmount_application -> site_node::unmount

site_node_delete_package_instance -> site_node::delete

Fix typos

  1. … 28 more files in changeset.
whitespace changes

Don't hard-code the SiteNodeCache sizes in the library file and bump version number

Backport from HEAD

  1. … 1 more file in changeset.
Don't hard-code the SiteNodeCache sizes in the library file,

but allow configuration via the config-file.



# Provide tailored sizes for the site node cache in acs-tcl:


ns_section ns/server/${server}/acs/acs-tcl

ns_param SiteNodesCacheSize 2000000

ns_param SiteNodesIdCacheSize 100000

ns_param SiteNodesChildenCacheSize 100000


Fix more typos

  1. … 11 more files in changeset.
- use "ad_try" instead of "with_catch"

- use "ad_try" instead of "with_finally"

  1. … 4 more files in changeset.
Improve scalability of site-node caches

Some sites have site-node caches with more than 200k site-node entries.

Wild card operations for flushing in these caches can take a while (2-digit ms),

locks on the site-node cache can lock everything. This change separates

the caches with wild-card operations from the parts not requiring these.

improving vor sample data the scalability at least by a factor of 4.

Fix typo (non-commented testing line)

Perform less aggressive cache flushing

Furthermore, allow ns_cache_flush in xo::clusterwide

  1. … 1 more file in changeset.
merged changes from the oacs-5-9 branch and resolved conflicts

  1. … 7834 more files in changeset.
Fix typo

Flush cache also for ancestors of nodes when mounting a package

- Tcl idioms: simplify access to last character

  1. … 3 more files in changeset.
Removed leftover statement

Keep old proc behavior regarding deletion of the package so we don't break any previous code

  1. … 1 more file in changeset.
Use lreverse instead of inverting the list manually

Use better idiom to concatenate subnodes

- remove trailing white-space

Allow to delete node_ids having subnodes. This simply triggers unmount and delete

of site node, package instances and all its tree structure as one could do manually,

but packages themself are still responsible to "clean their own mess".

  1. … 1 more file in changeset.
- add warning in case site_node::get_node_id_from_object_id returns first of many urls

- make return explicit

- make test working as well for newer versions of nsf

- add per-request caching of site-node properties