Kory Draughn
Chief Technologist
iRODS Consortium

Technology Update
June 17-20, 2025
iRODS User Group Meeting 2025
Durham, North Carolina
Contributors
iRODS Release | Issues Closed |
---|---|
4.3.3 | 89 |
4.3.4 | 134 |
5.0.0 | 178 |
5.0.1 | 5 |

Kory Draughn
Alan King
Markus Kitsinger
Derek Dong
Martin Jaime Flores Jr
Terrell Russell
Justin James
Daniel Moore
Nishant Dash
Violet White
Felix A. Croes
Phillip Davis
Awab
Peter Verraedt
June Releford
lenocil
4.3.3 Release Highlights
- Removed support for CentOS 7
- Support for Ubuntu 24.04
- Support for PostgreSQL 15
- Support for newer compilers and libstdc++
- Plugin package names include the server version which they were built against
- GenQuery2 improved support for SQL functions
- SQL function syntax can be used in the WHERE and ORDER-BY clauses
- Understands multi-argument SQL functions
- 10x performance improvement to timestamp generation for log messages

4.3.4 Release Highlights
- More deprecations
-
ilocate
,igetwild
,imeta qu
,imeta
's interactive mode - Server monitoring tools, modification of ACL policy - i.e. STRICT ACLs
-
- More bug fixes
- Cleaned up implementations
-
imiscsvrinfo
reports SSL/TLS certificate information-
Made possible through enhancements to the
rcGetMiscSvrInfo
API endpoint
-
-
Server removes ACLs following the removal of a user
-
Expanded permission levels supported by the atomic ACL operations API endpoint

5.0.0 / 5.0.1 Release
iRODS 5 represents a significant effort to deliver 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.

4.3.2 Core Server Updates
- GenQuery2
- Replica Truncate API
- Support for MariaDB
- Serialization of more iRODS data types
- Improved server stability

** Bold items discussed in this talk **
- Improved documentation
- How to report security vulnerabilities
- Updated dynamic PEP listing
- Replication
- Good replicas overwriting good replicas is now a no-op rather than an error
GenQuery2

GenQuery2 is now shipped with the server.
It is still considered experimental, but use is encouraged.
Its implementation can change as a result of community feedback.
Not used by the server, yet.
GenQuery2 will be available in the next release of the Python iRODS Client and Jargon.
New API - rc_replica_truncate
Allows applications to adjust the size of a single replica.
Motivated by NFSRODS.
Additional Information
- Modeled after POSIX
truncate(2)
- Includes a microservice for policy
- Replaces
rcDataObjTruncate
(deprecated)
There are plans to add support for an ftruncate
-style API as well.

Serialization of more iRODS data types
iRODS 4.3.2 now serializes the following data types for the rule engine plugin framework.
-
StructFileExtAndRegInp
(ibun
) -
ExecMyRuleInp
(irule
) -
MsParamArray
(irule
)
Policy implementers can now inspect the contents of requests dealing with archive files and rule execution, and react accordingly.

iRODS 5.0 - Primary Goals
Modernize the startup/shutdown process for the iRODS server.
Things we are going to address ...
- Startup/Shutdown sequence is more deterministic
- No mixing of fork[-exec] and multi-threading logic
- No dependency on external Python code
- Server configuration is only loaded on startup
- Supports live reloads via
SIGHUP
signal - Agents no longer reload the configuration
- Supports live reloads via
- Non-package installation is supported by design
We are considering ...
- Decoupling of hostnames from servers
- Possibly the removal of hostnames altogether
- May not be possible due to server-to-server redirects
- Possibly the removal of hostnames altogether

iRODS 5.0 - Early Design and Implementation
Experimentation is now in progress. It's too early to assert anything about the design/implementation. Initial design is heavily influenced by the iRODS HTTP API.
At the moment, the plan is to honor the following ...
- Clear separation of concerns between components
- Plugins handle their own shared memory
- Multi-threaded code is constrained to leaf processes
- Runs as a normal application
- Accepts a path to directory containing configuration files
- Can be launched as a daemon process
- Control plane runs as a separate process
- Meets all requirements for working with systemd

Core Development Team Talks
-
Not in This Talk / Separate Talks
-
Phil Owen
-
iRODS Build and Test v9: Automation via GitHub and Kubernetes
-
-
Markus Kitsinger
-
iRODS Build and Packaging: 2024 Update
-
-
Kory Draughn and Martin Flores
-
iRODS HTTP API v0.3.0 with OpenID Connect
-
-
Justin James
-
iRODS S3 API v0.2.0 with Multipart
-
-
Terrell Russell
-
DAViDD: Initial data management solution for UNC's READDI AViDD Center
-
iRODS Metadata Templates Working Group: Building Blocks and Lessions Learned
-
-

-
Included in This Talk
-
Kory Draughn
-
Indexing Capability Plugin
-
Python Rule Engine Plugin
-
-
Derek Dong
-
Metadata Guard Rule Engine Plugin
-
-
Justin James
-
S3 Resource Plugin
-
Globus Connector
-
-
Daniel Moore
-
Python iRODS Client
-
-
Kory Draughn
-
NFSRODS
-
-
Indexing Capability Plugin
- Requires Elasticsearch 7 or later
- Uses Boost.Beast library for communication with Elasticsearch
- elasticlient and CPR replaced by Boost.Beast
- No change in behavior
- Removed document type rule engine plugin
- No longer serves a purpose due to changes in Elasticsearch
- Supports TLS communication with Elasticsearch
- Supports Basic Authentication
- Modernized CMake

Python Rule Engine Plugin

irods_rule_vars
now available in more contexts
- Accessible in imported python modules
-
irods_rule_vars
formerly known asglobal_vars
- Deprecated
global_vars
Improved documentation
- Covers how to pass values back to the caller, across rule engine plugin boundaries
- Covers what happens to the output of
print()
Metadata Guard Rule Engine Plugin
Resolved some holes in the implementation.
- Handles atomic metadata operations API PEPs
- Disallows renaming non-protected AVU to existing protected AVU
- Disallows use of deprecated
imeta rmw
- Wildcard operations can bypass plugin logic (e.g.
"irod%"
) - Wildcard operations make it difficult to cover all metadata cases
- Wildcard operations can bypass plugin logic (e.g.

S3 Resource Plugin and Globus Connector
S3 Resource Plugin
- libs3 dependency absorbed into repository
- libs3 no longer shipped as externals package
- Fixed streaming with decoupled mode after server redirect
- Fixed setting of open flags on PUT operation
Globus Connector
- Supports rename functionality
- Supports preservation of file modification time
- Added Docker-based testing framework
-
O_CREAT
flag is now set on the first open for write operations

Python iRODS Client - from 1.1.9 to 2.0.1
$ git shortlog --summary --numbered v1.1.9..v2.0.1 25 d-w-moore 7 Terrell Russell 1 Raoul Schram

Release | Issues Affected |
---|---|
1.1.9 | 6 |
2.0.0 | 20 |
2.0.1 | 9 |
Total | 35 |
Python iRODS Client - from 1.1.9 to 2.0.1 (cont.)
Bug fixes
- Tickets now work with parallel transfer
- Tickets are now applied to all connections within a session
- Regression in which
ssl_verify_server = 'none'
stopped working - Data objects opened with append flag now seek to end
New features
- Now redirects to resource server for improved transfer performance
- Client-side configuration can now be loaded/saved
- Added auto-close option of data objects
- Added ability to manipulate and query user/group quotas
- Added support for case-insensitive queries

Python iRODS Client - from 1.1.9 to 2.0.1 (cont.)
Deprecation and Removal
-
permissions
manager has been removed (originally deprecated)- Replaced by
acls
manager- Defaults to only raw listing of ACLs, per
ils -A
- Defaults to only raw listing of ACLs, per
- Replaced by
Compatibility Updates
- 2.0.1 brings full compatibility with 4.3.2
-
pam_password
support since 2.0.0- Allows working alongside icommands environments in 4.3+

NFSRODS - from 2.1.0 to 2.3.0
Updates
- Reports its name to the iRODS server for
ips
-
Resilient to restarts of the iRODS server
- No longer requires remounting
- Supports resizing of data objects (requires iRODS 4.3.2)
- Improved stability
Ongoing Investigations
- Improve performance of list operation

Release | Issues Closed |
---|---|
2.2.0 | 14 |
2.3.0 | 6 |
iRODS Internships - Summer 2024
Convert existing web applications to our new HTTP API (ReactJS + HTTP)
The relatively new iRODS Zone Management Tool is due for its first refactor. Originally built to talk with a REST API, it needs to be converted to talk to the new iRODS HTTP API. If this work on the administrator tool proves pretty straightforward, we are interested in evaluating a similar refactor for our user-level GUI, Metalnx (or to even start designing a new webapp from scratch).
Create new client libraries around our new HTTP API (Various Languages)
Our new iRODS HTTP API is making it easier for developers to interact with the iRODS ecosystem. We would like to help them even more by providing new client libraries in various languages that wrap their native or library-provided http calls. We are most interested in Java, Python, and Javascript, but any language will provide a learning opportunity and help map out the space for other languages.

Big Picture
Core
-
4.3 - Focus on stability, bug fixes, plugins, clients
-
5.0 - Modernize the deployment process, improve determinism, libstdc++
Clients
-
GUIs (ZMT, Metalnx, et al.)
-
Onboarding and Syncing (Automated Ingest)
-
File System Integration (NFSRODS, SFTP)
-
iRODS HTTP API
-
iRODS S3 API
Continue building out policy components (Capabilities).
We want installation and management of iRODS to become about policy design, composition, and configuration.
Please share your ...
-
Use cases
-
Pain points
-
Hopes and dreams

Open Source Community Engagement
Get Involved
-
Working Groups
-
GitHub Issues
-
Pull Requests
-
Chat List
-
Consortium Membership
Tell Others
-
Publish, Cite, Advocate, Refer

UGM 2025 - Technology Update
By korydraughn
UGM 2025 - Technology Update
iRODS User Group Meeting 2025 - Technology Update
- 43