• last updated 19 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Make acs::try_cache more robust to transitional situations during instance upgrade, where the object might exist, but not the method

Added dynamic cluster configuration checking

- handle cases, where not all cluster nodes are available at startup

time (this is a problem for docker, since the IP addresses will not

be available as well)

- handle dynamic changing of configuration variables

- refactored code

- new methods "acs::Cluster register_nodes" and

"acs::Cluster refresh_blueprint" (called regulary via scheduled

procedure, running every minute)

  1. … 2 more files in changeset.
Support the usage of HTTP locations in kernel parameter ClusterPeerIP

The change extends the values specified in ClusterPeerIP in two respects

- one can now specify the protocol (defaults to http)

- while ClusterPeerIP required an IP address, it is now possible to specify an DNS name

The DNS name is resolved for the time being at the start time of the OpenACS instance.

  1. … 2 more files in changeset.
Small optimization for cachingmode "none": no need to broadcast cache flushing

fix brackets

added argument handling to try_cache operations

Support memory units as default of the cache sizes

Ease the transition from no_empty to no_cache flag on this public api

Extended LockfreeCache:

- Feneralized flag "-no_empty" of "LockfreeCache eval" to "-no_cache LIST"

The provided list can contain multiple values that should not be cached.

- The new parameter "-from_cache_indicator" can be used to return information

whether the returned value was returned from the cache or not.

  1. … 2 more files in changeset.
provide as well a minimal compatibility for "-size" parameter on ns_baseunit

  1. … 1 more file in changeset.
correct comment

Use "ns_baseunit", when available for size calculation of parititoned caches

Generalize ::acs::try_cache (such it can be use not only for "...cache eval..."

  1. … 3 more files in changeset.
reduce further redundancy

  1. … 1 more file in changeset.
Don't complain when flushing per-thread cache without content

perform also sitewide flushes for urspace based site-node cache

  1. … 1 more file in changeset.
Refactored and streamlined of cluster infrastructure

- base the API new new cluster infrastructure (including memoize-flush, server_cluster_peer_hosts, etc.)

- improved handling for multiple IP addresses and IPv6

- removed assumptions of local vs. global network drivers

- server_cluster_httpget_from_peers not used anymore

  1. … 5 more files in changeset.
Provide a default timeout of 5m to all ns_cache besed caches created via the acs-cache infrastructure

Background: in case, a db entry is to be cached, where the db query

does not finish (e.g. runs into a deadlock), subsequent attempts for

the same value will be blocked as well by the mutex protecting the

entry to be cached. Therefore, later requests to this entry might queue

up in the server. By providing a timeout, this mutex will terminate

latest when the timeout is reached.

The default value for the timeout is set to 5m. In case a certain

cache might issue requests running longer than this, the cache has

to be configured with a larger timeout value.

Improving ad_parameter_cache:

- added handling of cachingmode "none"

- added implementation via "nsv_dict" (cluster aware)

- execute parameter callbacks cluster-wide

- version number bumped to 5.10.1d4

  1. … 3 more files in changeset.
let the per_thread_cache behave like the per_connection_cache when the NaviServer configuration valriable "cachingmode" is set to none

make code slightly more regular

  1. … 1 more file in changeset.
added method "get" for "LockfreeCache" (somewhat similar to nsv_get)

improved wording in comment

Prefer 'namespace which' over 'info commands', as it is faster (on local tests, around 2x) and returns a single value. Many thanks to Nathan Coulter.

  1. … 58 more files in changeset.
improve spelling

  1. … 5 more files in changeset.
Implement a flush method for ::acs::acs::LockfreeCache and use it to reimplement permission::permission_thread_cache_flush

This fixes ad_proc_permission_grant_and_revoke test case

  1. … 1 more file in changeset.
improve comments

  1. … 1 more file in changeset.
acs::per_request_cache: standardize per-request caching

- added per-request cache verfsy similar to acs::per_thread_cache

- use per-request-cache on several occasions

- bump version number of acs-tcl to 5.10.0d35

  1. … 9 more files in changeset.
use dot instead of colon as separator between package name and cache key to ease readability

  1. … 10 more files in changeset.
acs::per_thread_cache: standardize per-thread caching

- added per-thread cache based on namespaced Tcl variables.

- use per-thread-cache on several occasions

- bump version number of acs-tcl to 5.10.0d34

  1. … 14 more files in changeset.
no need to provide separate hash method, which hinders actually for the hashkey partitioned cache