• last updated 23 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Various fixes for "function_args"

- The default value for "authority_id" in acs_user__new was missing.

- Removed leftovers from earlier changes in the SQL API. The update

scripts did not care about function args, so orphaned entries could

cause confusions.

- The drop-package SQL function did not care about deleting entries on

the function args table. The function args deleted here are created

automatically by the Tcl proc "package_generate_body".

- bumped verison of acs-kernel to 5.10.1b6

    • -8
    • +2
    ./sql/postgresql/community-core-create.sql
file upgrade-5.10.1b5-5.10.1b6.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/postgresql/upgrade/upgrade-5.10.1b5-5.10.1b6.sql
improved spelling

  1. … 4 more files in changeset.
fixed typo

improved description of parameter

made spelling more consistent

Fixed issue introduced in OpenACS 5.9.0

The old version did not insert a property value via the

sec_session_property__upsert() in PostgreSQL on the initial setting

(later updates were OK). The broken version was just adding a tuple

and left the "property_value" empty.

Many thanks to Jonathan Kelley for identifying the issue and reporting it.

    • -16
    • +16
    ./sql/postgresql/security-create.sql
file upgrade-5.10.1b4-5.10.1b5.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/postgresql/upgrade/upgrade-5.10.1b4-5.10.1b5.sql
Silence potentially confusing warning during first installation

    • -2
    • +2
    ./sql/postgresql/groups-body-create.sql
    • -2
    • +2
    ./sql/postgresql/site-nodes-create.sql
Move test from acs-kernel to acs-tcl, add remarks

  1. … 1 more file in changeset.
Adding auto-deletion of dynamic cluster nodes and small refactoring

- New kernel parameter "ClusterAutodeleteInterval" to specify, when a

dynamic cluster node is not regarded as temporarily unavailable but

as definitely gone. The default value for this parameter is 2m (2

minutes).

- small refactoring to reduce duplicated logic

- Bumped version numbers:

* acs-kernel to 5.10.1b4

* acs-tcl to 5.10.1b3

* acs-admin to 5.10.1b3

  1. … 5 more files in changeset.
Small update for cluster support

- Improved visualization of cluster nodes that we lost contact to

- New kernel parameters to reduce hard-coded values and to make purpose more explicit

* new parameter ClusterHeartbeatInterval (default 20s),

was hardcoded before to the new default value

* renamed PreferredLocationRegexp -> ClusterPreferredLocationRegexp

* renamed EnableLoggingP -> ClusterEnableLoggingP

- Bumped version numbers:

* acs-kernel to 5.10.1b3

* acs-tcl to 5.10.1b2

* acs-admin to 5.10.1b2

acs-kernel acs-admin acs-tcl/

    • -0
    • +24
    ./sql/oracle/upgrade/upgrade-5.10.1b2-5.10.1b3.sql
  1. … 5 more files in changeset.
file upgrade-5.10.1b2-5.10.1b3.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/oracle/upgrade/upgrade-5.10.1b2-5.10.1b3.sql
    • -0
    • +0
    ./sql/postgresql/upgrade/upgrade-5.10.1b2-5.10.1b3.sql
added standard parameterizations for Argon2 when supported.

  1. … 2 more files in changeset.
fixed typo

    • -2
    • +2
    ./sql/oracle/acs-permissions-create.sql
  1. … 2 more files in changeset.
replaced complex and error-prone test with a more sane version

Actually, this test should be in acs-tcl, since all kernel behavior is already

there, and the directory "tcl" was left intentionally empty.

parameter AllowedTag: added <adp:toggle_button> to default value

bumped version numbers to 5.10.1b1

  1. … 85 more files in changeset.
file upgrade-5.10.1d10-5.18.1d19.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/oracle/upgrade/upgrade-5.10.1d10-5.18.1d19.sql
file upgrade-5.10.1d18-5.10.1d19.sql was initially added on branch oacs-5-10.

made names of SQL functions explicit to ease calling directly from the Tcl level

Remove no_alarms_until column

Rationale: the column or the related api is never used in upstream code to check whether notifications should be sent or not or not. The UI to manage the column's value was not linked anywhere. On the instances accessible by me downstream, no tuple was found where this column had a value.

    • -27
    • +1
    ./sql/oracle/community-core-create.sql
    • -37
    • +1
    ./sql/postgresql/community-core-create.sql
  1. … 13 more files in changeset.
file upgrade-5.10.1d17-5.10.1d18.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/oracle/upgrade/upgrade-5.10.1d17-5.10.1d18.sql
Added proc "membership_rel::expire" so that all membership states are now covered. Note: The Oracle part is best effort only!

    • -1
    • +11
    ./sql/oracle/groups-body-create.sql
    • -1
    • +25
    ./sql/postgresql/groups-body-create.sql
  1. … 5 more files in changeset.
file upgrade-5.10.1d16-5.10.1d17.sql was initially added on branch oacs-5-10.

    • -0
    • +0
    ./sql/oracle/upgrade/upgrade-5.10.1d16-5.10.1d17.sql
Cluster reform

- Support for dynamic cluster nodes:

Previous versions of OpenACS required to know the IP addresses of

the cluster nodes in advance, which is a show-stopper for many cloud

applications.

The new functionality allows arbitrary nodes to register as client

nodes at the canonical server, provided that these know a shared

secret. All messages of the intra-cluster talk are now

cryptographically signed using this shared secret.

In the current version, the shared secret key has to be specified in

the NaviServer configuration file (ClusterSecret). Later versions

will support the use of other measures such as generated keys, kept

as files.

Also in the new version it is still possible to use static peer

addresses (which do not have to register during startup).

- Support for multiple protocols for intra-cluster talk

Previous version of OpenACS required the communication of the

intra-cluster talk over HTTP. With these changes, multiple protocols

are supported. Most prominently HTTPS can be used, which is required

by some organization for all web communication, especially for cloud

applications. Other protocols might be added later (e.g. UDP).

- Nodes (such as the canonical server) can be specified via URL

locations. These location specifier have the following advantages

over classical IP address and port.

* support different protocols (http, https, udp)

* support of IP addresses or DNS names

* when DNS names map to multiple IP addresses

(e.g. multiple IPv4 and/or multiple IPv6 addresses)

the new parameter PreferredLocationRegexp can be use

to select the wanted. When this regexp does not match

any of the addresses, the first address is used.

* ports are now optional (except UDP)

* for location specifier: https://openacs.org

- Support for cluster communication statistics

(requires xotcl-request-monitor)

These statistics show the amount of intra-server

communication. The following statistics are collected

per node:

- number of broadcast operations

- number of send operations (active flushes)

- number of receive operation (passive flushes)

For N cluster nodes, the send operations are

basically the number of broadcast operations times

the number of nodes minus one.

These statistics can also be used prior to cluster

enabling, to obtain the number of potential broadcast

operations.

Kernel Parameters

CanonicalServer : location of the canonical server

ClusterAuthorizedIP : obsolete

ClusterEnabledP : unchanged

ClusterPeerIP : obsolete

EnableLoggingP : unchanged

PreferredLocationRegexp : new

DynamicClusterPeers : new, no not edit

Differences between old and new value for "CanonicalServer":

old:

- specify IP address with port

- example: 137.208.116.31:443

new:

- specify URL location

- support different protocols (http, https, udp)

- support of IP address or domain name

- when domain name maps to different IP addresses

(e.g. multiple IPv4 and/or multiple IPv6 addresses)

PreferredLocationRegexp can be use to select the wanted.

When the provided regexp does not match any of

the addresses, take the first address.

- port is optional

- example: https://openacs.org

Sample setup

Old:

CanonicalServer : 137.208.116.31:443

ClusterAuthorizedIP : 137.208.116.31

ClusterPeerIP : 137.208.116.31:443 137.208.116.31:8443

ClusterEnabledP : 1

EnableLoggingP : 1

New:

CanonicalServer : https://openacs.org

PreferredLocationRegexp : https://

ClusterEnabledP : 1

EnableLoggingP : 1

#

# Cluster secret for intra-cluster communications in NaviServer

# configuration file. Clustering will not be enabled if no value is

# provided.

#

ns_section ns/server/$server/acs {

# ...

ns_param ClusterSecret "please change me"

}

#-----------------------------------------------------------------------

# Support for munin statistics

#

# 1) install munin plugins for naviserver (munin-plugins-ns.git)

# 2) add link to the munin plugins (replace "openacs" by the name

# of your server in the munin configuration)

# /etc/munin/plugins/naviserver_openacs_count_cluster -> /usr/share/munin/plugins/naviserver_count

# 3) in the plugin plugin configuration (e.g., etc/munin/plugin-conf.d/naviserver)

# add a section like the following (again, replace "openacs" by the server name you used)

#

# [naviserver_openacs_count_cluster]

# env.title Cluster

# env.vars cluster:broadcast cluster:sent cluster:received

#

# 4) restart munin

  1. … 4 more files in changeset.
Deprecate acs_privacy:: api and inline the few usages in the dotlrn packages

See https://openacs.org/forums/message-view?message_id=5672076

  1. … 5 more files in changeset.
new partial index for a common query

... checking for "approved" members

file upgrade-5.10.1d13-5.10.1d14.sql was initially added on branch oacs-5-10.

make update script more robust in case the table acs_privilege_descendant_map was already dropped

The old version worked on pg14, but as it looks, not on earlier pg versions.