The iRODS Consortium and RENCI are pleased to announce iRODS 5.0.0.
This release represents a significant effort to make iRODS what users expect from an enterprise grade data management platform. Great focus has been put into making iRODS 5 easy to deploy and manage in a variety of environments.
Notable updates include:
server_config.json
. It honors signals in the expected manner and also communicates its status to the service manager. Servers can now be launched out-of-order as well. This redesign has led to the removal of several components including but not limited to the control plane, irods-grid
, and irodsctl
.server_config.json
. The server no longer relies on the service account's irods_environment.json
file.DISTINCT
keyword. This is a major departure from GenQuery1. This change is motivated by a need for more control over queries which involve counting.The iRODS 5 series will federate with the iRODS 4.3 series. However, the Consortium reserves the right to change requirements around federation, if necessary.
If upgrading to iRODS 5.0.0 and using rsyslog, please add irodsAgent
to your rsyslog configuration to avoid missing important log messages. See rsyslog configuration for more information.
This release consists of 957 commits from 16 contributors and closed 178 issues marked for 5.0.0 and an additional 24 closed issues to be included in the upcoming 4.3.5 release.
The latest binary packages for RockyLinux9, Ubuntu22, Ubuntu24, and Debian12 are available at https://packages.irods.org/.
Changed
Update message for
itrim
to use "data objects" instead of "files" (#4685).Lift deprecation of
COPIES_KW
for DataObjTrim API - e.g.itrim -N
(#4861).Lift deprecation of all static policy enforcement points (#5952).
Move authentication plugin framework out of experimental namespace (#6150).
Default to building against libstdc++ instead of libc++ (#7220).
Redesign server startup/shutdown process (#7229).
Separate upgrade logic from server startup (#7229).
Require reload of
server_config.json
to be initiated by SIGHUP signal (#7229).Install libraries and plugins into expected locations for distributions (#7410).
Migrate to OpenSSL 3 (#7483).
Remove
irods::buffer_crypt::gen_hash
(#7483).Remove unnecessary TLS member variables from
RodsEnvironment
struct (#8369).Make optional iRODS 4 properties required in
server_config.json
(#7700, #8011).Add missing properties to JSON schema for
server_config.json
(#7700, #8004).Migrate to system-provided nlohmann-json (#7726).
Rename authentication plugin directory from
auth
toauthentication
(#7937).Make
database
plugin stanza easier to manage and inspect (#7975).Remove server's dependency on service account
irods_environment.json
file (#2626, #8012).Hard-code
client_server_negotiation
property torequest_server_negotiation
(#8012, #8376).Make
getRodsEnv
load information from different location based onProcessType
(#8012).Make
setup_irods.py
prompt for FQDN, Hostname, or IP address (#8013).Enable authentication plugins to accept passwords in requests (#8016).
Rename
plugin_home
toplugin_directory
inirods_environment.json
(#8019).Make authentication scheme name required in
authenticate_client
(#8257).Replace use of
clientLogin
functions withauthenticate_client
(#8257).Update catalog schema for tracking access time on upgrade (#8260).
Update access time on registration of additional replica (#8260).
Update access time on registration of new data object (#8260).
GenQuery2: Grant users full control over
DISTINCT
keyword (#8261).GenQuery2: Allow
DISTINCT
keyword in function calls (#8261).Log database activity under the
database
log category (#8317).Log SQL and bind variable information under the
sql
log category (#8318).Migrate to distribution-provided CMake (#8330).
Migrate to distribution-provided Catch2 (#8331).
Migrate to distribution-provided fmtlib (#8332).
Migrate to distribution-provided spdlog (#8332).
Apply constraints to JSON schema for
server_config.json
(#8343, #8353).Make
pam_password
authentication plugin return an error when TLS is not enabled (#8360).Optimize query performance when adding metadata (#8392).
Move authentication plugins into
irods::authentication
namespace (#8428).Update server to permanently enforce
client_api_allowlist_policy
(#8473).Print user and host information to terminal when authenticating via
iinit
(#8487).Removed
Remove GeneralUpdate API (#2956).
Remove
-p
option fromiput
andicp
(#4932).Remove SimpleQuery API (#5247).
Remove authentication plugin header files (#6150).
Remove
ASSERT_ERROR
andASSERT_PASS
(#6229).Remove wildcard operations from ModAVUMetadata API -
adda
,addw
,lsw
,rmw
(#6766).Remove support for
spLogSql
environment variable (#7229).Remove control plane (#7229).
Remove
irods-grid
(#7229).Remove
kill_pid.py
script (#7229).Remove
schema_validation_base_uri
fromserver_config.json
(#7229).Remove dependency on Python 3 requests module (#7229).
Remove support for
AGE_KW
from DataObjTrim API (#7504).Remove RBUDP (#7560).
Remove
msiSendMail
(#7563).Remove
--link
option fromiput
andirsync
(#7578).Remove
BACKUP_RESC_NAME_KW
(#7594).Remove
msiSetResource
(#7603).Remove
update_deprecated_database_columns.py
script (#7834).Remove server monitoring microservices (#7904).
Remove
imeta qu
(#7960).Remove interactive mode from
imeta
(#7962).Remove DataObjLock and DataObjUnlock APIs (#7980).
Remove ability to disable Strict ACLs (#7954, #7985).
Remove
irodsctl
script (#7996).Remove status function from IrodsController (#8008).
Remove SysVinit script (#8020).
Remove
schema_version
property from zone report (#8038).Remove server_status.json.in (#8058).
Remove GeneralRowInsert API (#8068).
Remove GeneralRowPurge API (#8068).
Remove
agent_factory_watcher_sleep_time_in_seconds
fromserver_config.json
(#8069).Remove
igetwild
(#8084).Remove
ilocate
(#8084).Remove GSI authentication objects (#8257).
Remove Kerberos authentication objects (#8257).
Remove
--wlock
and--rlock
options (#8273).Remove osauth and
genOSAuth
(#8300).Remove ZeroMQ references from buildsystem (#8326).
Remove Avro references from buildsystem (#8327).
Remove
rodsDebug
member variable fromRodsEnvironment
struct (#8367).Remove control plane member variables from
RodsEnvironment
struct (#8368).Remove option to read
server_config.json
fromnew_database_connection
function (#8438, #8445).Remove support for
irodsOdbcDSN
environment variable (#8445).Remove unnecessary iadmin subcommands -
ctime
,mkdir
,rmdir
,ls
(#8497).Remove code which prints/logs network messages between client and server (#8509).
Deprecated
Deprecate legacy authentication plugins (#8257).
Deprecate
clientLogin
-related functions (#8257).Fixed
Replace ad-hoc GenQuery1 parser with flex-bison parser (#3902, #4983, #5992, #7164, #7169, #7174, #7302, #7972, #8033).
Reduce scope of
FILE_PATH_KW
(#4932).Prevent
iinit
from showing native authentication password prompt for non-native authentication schemes (#7948).Fix error handling logic for heartbeat operation (#8050).
Make GenQuery2 honor group permissions (#8259).
Restore support for
KeyValPair
in Python rule engine plugin (#8265).Fix redirect bug of client request from Consumer server to Provider server in GenQuery2 API (#8439).
Unregister replica before unlinking in DataObjUnlink API (#8441).
Set working directory when stopping server during package upgrade (#8492).
Replace invalid UTF-8 sequences in log messages (#8498).
Added
Add
host
property toserver_config.json
for specifying the identity of the server (#7229).Add
plugin_directory
property toserver_config.json
for specifying from which directory plugins are to be loaded (#8005).Implement new API for locking and unlocking delay rules (#8023).
Add support for delay rule locking columns to GenQuery (#8023).
Add support for delay rule locking columns to RuleExecMod API (#8023).
Make server communicate status to service manager (#8036).
Add systemd service file template (#8049).
Add
rc_authenticate_client
for C clients (#8257).Implement new API for updating the access time of multiple replicas (#8260).
Make server track access time of each replica (#8260).
Add support for access time to
iadmin modrepl
(#8260).Add support for access time to ModDataObjMeta API (#8260).
Add support for querying access time to GenQuery (#8260).
Add dedicated log category for GenQuery1 (#8319).
Alongside the core packages included in 5.0.0, the following plugins have been updated for compatibility: