The Resource logo

The Resource

Archives
Subscribe
October 30, 2023

The Resource for October 2023

Your monthly iRODS developments

The Resource

Hello Reader, here is this month’s iRODS news and developments!


News

iRODS 4.3.1 is released!

​release announcement​

This release represents a steady improvement on 4.3.0's significant release last year. Most significantly, the memory leaks introduced with the new frameworks in 4.3.0 have been fixed alongside internal refactoring. Additionally, three new operating systems are now supported by our binary packaging.
​
Detached mode has been added to the unixfilesystem plugin which provides superior performance when working with parallel filesystems.
​
Additional machinery has been made available to control TCP Keepalive behavior, ticket administration, connection pooling, and authentication configuration.
​

Big news and congratulations to the developers!

A few issues I’ve picked out from the list below to prepare for if you are looking at upgrading;

  • (Add log_level for sql to server_config.json file )[https://github.com/irods/irods/issues/7393]
  • (the service account environment requires irods_connection_pool_refresh_time_in_seconds to be set)[https://github.com/irods/irods/issues/7392]

iRODS Python Client Library v1.1.9 is released

​v1.1.9​

  • [#471][#472] allow save, load, and autoload of configuration [Daniel Moore]
  • [#456] auto-close data objects that go out of scope [Daniel Moore]
  • [#455] remove ticket check [Daniel Moore]
  • [#452] implement client redirection to resource server [Daniel Moore]
  • [#455] introduce low level ticket api changes [Daniel Moore]
  • [#234] Implement case-insensitive queries [Sietse Snel]

Especially interested to see the config loading section - will reduce boilerplate code!

iRODS Development Update - October 2023

​Too much to summarise - go read it!​


Main Repository Activity

Open Issues

​Registering collection results in errors in logs ​

​After upgrade to iRODS 4.3.1 there are warnings about sql logging in the logfiles​

​iRODS 4.3.1 fails to start after upgrade because of missing required parameter in service account environment​

​irods_performance2.pdf hyperlink in https://irods.org/faq/ cannot be found​

​add documentation for writeLine()​

​msiDataObjCopy not triggering any pep​

​No PEP is fired for sub items by recursive ACL change​

​pep_*_get_grid_configuration_value_* not available in documentation​

​iadmin mkgroup doesnt fail when more than its expected positional options provided​

​Setup script does not work for Postgres 15​

​irule does not return error codes for PREP (sometimes?)​

​iadmin rmuser and iadmin rmgroup can function for each other​

​ibun commands seems not triggering any pep?​

​irsync with -s option from i: to i: registers checksum​

​imeta doesnt contain the client name/identifier - spOption​

​Parallel transfer (high ports) can result in garbage when servers use mismatch TLS/SSL configurations​

​Ensure irods-dev pulls in proper curl-dev dependencies​

​Proposal: .9x versioning for main branch​

This seems a great idea; do take a look if you work with compiling from source

At present, we increment the version number of the main branch to that of the next major release once it has diverged significantly from the current stable series branch. This means that the major release itself may not have a higher version number than a development build from the same branch from before the release. This poses a problem for packaging, as it may not result in a release taking priority over an older development build. In our stable series branches, we avoid this by incrementing version numbers just before release.
​
I am proposing that instead of incrementing to the next major release on significant divergence from stable, we follow the example set by Gnome and increment to a minor release with a value of .90 (ex: 4.3.90) and increment to the next major version just before release.
​
With this change to our versioning, downstream projects being developed side-by-side with iRODS will still have a version number to target, but we will not run into the version number precedent issue described above.
​
This change also comes with some additional benefits:
​
If a downstream project that inherits iRODS' version number is built against the main branch rather than a release, it will be evident in the version number.
When a user reports an issue with iRODS (or a downstream project that inherits iRODS' version number), we can tell from the version number whether they are using a development build from the main branch.
​

​Proposal: even/odd versioning​

Related to the above

At present, we increment version numbers in project repositories just before a release. This is a good practice and we should keep doing this, as it ensures that a release version number will always be greater than one from a development build from after the previous release but before the release in question.
However, this also presents the challenge to downstream projects that are developed side-by-side with iRODS: How to detect that the version of iRODS being used or built against is a development version. In my opinion, it should not be up to the developer to tell the buildsystem what version of iRODS it is actually building against, nor should it be up to iRODS users to tell clients that the version reported by the iRODS server should be taken with a grain of salt.
​
I am proposing that we change how we handle version numbers for iRODS to resemble the even/odd pattern used by many other software projects: we will continue to increment the iRODS version number just before a release, but we will also increment the version number again post-release.
​

Closed Issues

Closed on - 2023-10-16 13:49:02 istream read/write doesn’t trigger pep_api_data_obj_open_*​

Closed on - 2023-10-06 14:40:14 Has GenQuery of data objects changed between 4.3.0 and 4.3.1 ?​

Closed on - 2023-10-05 12:48:45 Uploading an existing object with -f to a group collection after inheritance set on cannot be listed by group users​

Closed on - 2023-09-29 21:31:35 Remove GSI from Pluggable Authentication documentation​

Closed on - 2023-09-29 21:31:26 Remove Kerberos from Pluggable Authentication documentation​

Closed on - 2023-09-28 15:08:08 Connection pool must check size parameter before use​

Closed on - 2023-09-20 21:24:36 Add EL version to RPM package version strings​

Closed on - 2023-08-29 15:43:42 NO_NEXT_RESC_FOUND when uploading data object using PRC if resource has minimum free space set​

Who wouldn’t be using ‘Minimum Space For Resource in Bytes’ if you have a unixfilesystem type resource! It’s a literal best practice mentioned in the documentation!

After re-reading the issue a few times, this was the pertinent section;

So the necessary conditions appear to be both using Python-irodsclient and setting minimum_free_space_for_create_in_bytes on unixfilesystem resources.
​

I think that this affects all versions of iRODS before 4.3.1 but was introduced at least after 4.2.7 (since I’ve been able to use the PRC on a 4.2.7 system but not tried the most recent PRC version). It would be excellent to know;

  1. what version this got introduced in.
  2. If the version of the PRC is related (i.e. can you use an earlier one? I think not, but…)
  3. If other APIs (e.g. C) are affected.

Note that stsnel has a workaround, but that involves using another system to monitor the free space and check that first, which… yay that they had this but most Zones won’t.

Trel does mention that

The workaround for using Python is to set the filesize to 0 when talking to a pre-4.3.1 iRODS server.
​

However, the documentation for the PRC doesn’t mention this, and it is not clear to me what effect setting the file size will have on other operations that might depend on it (e.g. it might try and create a file on a resource without sufficient space, or fail to recognise a partial upload?)

Closed on - 2023-10-02 16:54:21 Move pam_password configuration to R_GRID_CONFIGURATION​

Closed on - 2023-09-29 20:57:37 add API like GET_HOST_FOR_* but exposing resource hierarchy​

Closed on - 2023-08-03 21:36:41 Upgrades from 4.3.0 result in chown error​

Closed on - 2023-09-29 13:28:43 Add support for AlmaLinux 9 and Rocky Linux 9​

Closed on - 2023-08-15 17:43:48 msiCollRsync produces stacktrace, but works as expected​

Closed on - 2023-10-02 02:44:27 iput cannot create a new object with a ticket​

Closed on - 2022-12-15 21:11:38 Rename base64_encode and base64_decode​

Closed on - 2023-10-02 18:04:54 Ubuntu 22.04 Version Support​

Closed on - 2023-04-14 18:40:18 Replica in cache marked good after stage-to-cache returns an error​

Closed on - 2023-10-25 18:35:35 irule –test, -t does not enable test mode​

Closed on - 2023-10-25 19:31:32 Can’t execute a long python rule by irule​

Closed on - 2023-10-04 13:48:08 Cannot enact data object parallel transfers via a ticket. ​

Closed on - 2023-10-25 15:52:01 unixodbc version too old for postgres12​

Closed on - 2023-10-05 18:11:09 iput fails uploading large file​

Hmm. I agree It’s hard to reproduce but by closing the ticket without a positive test and therefore knowing its working, It’s hard to know if we can continue to use that combination of commands.

Closed on - 2023-09-30 02:41:09 NOT IN syntax support in GenQuery​

Closed on - 2023-09-30 01:33:56 minor bug report – iinit usage w/ GSI authentication​

Python iRODS Client Activity

Open Issues

​Eliminate all python2 compatibility concerns from the codebase​

​Add quota management capability (a la iadmin sgq)​

​Put() and get() for collection​

​add Quota model​

​Investigate support for creating proxy connections​

Closed Issues

Closed on - 2023-10-13 19:47:03 In Python2, #471’s settings autoload prints cryptic message if settings file is missing​

Closed on - 2023-10-13 19:46:48 Allow loading and saving of library configuration​

Closed on - 2023-10-13 19:46:33 data objects should properly finalize​

Closed on - 2023-10-13 18:53:53 tickets supply( )’d to session are not mapped to individual connections​

Closed on - 2023-10-13 18:53:27 PUT and GET should transfer data directly to/from the resource server​

NFSRODS Activity

Open Issues

​Investigate ways to improve performance of InodeToPathMapper class​

​Permissions do not map correctly to 10 level permission model in iRODS 4.3.0​

Closed Issues

Closed on - 2023-10-24 21:36:32 Avoid unnecessary stat in middle of list operation​

Closed on - 2023-10-24 21:38:32 Investigate inconsistencies in tests​

Closed on - 2023-10-02 23:32:12 Build fails after most recent OpenJDK 17.0.7 update​

Closed on - 2023-10-24 18:55:37 SNAPSHOT reference in 2.1.0 pom​

Closed on - 2022-10-12 17:24:41 Building nfsrods in an automation fails​

Closed on - 2023-08-24 17:10:19 make NFSRODS report via spOption​

Hurrah! This should make ips reporting more obvious.

Closed on - 2023-10-13 15:21:53 provide graceful IP-to-user mapping configuration to allow ‘root’ access in VM​

If you are thinking of this, check out the note where Terrell explains how this can be done via NFS already.

Closed on - 2023-09-29 19:41:05 restarting NFSRODS without re-mounting at the client produces incorrect behavior​

icommands Activity

Closed Issues

Closed on - 2023-10-23 15:21:35 Usage of get_grid_configuration and set_grid_configuration not clear​

externals Activity

Open Issues

​Ensure avro has proper RUNPATH/RPATH​

Closed Issues

Closed on - 2023-10-09 16:38:10 Remove pistache​

YODA Activity

Open Issues

​[FEATURE] Dynamically extend JSON metadata​

Closed Issues

Closed on - 2023-10-11 10:02:48 [FEATURE] Do not allow open licenses when Access is set to Restricted or Closed​


If you think someone else would appreciate this newsletter, they can sign up at https://theresource.metadata.school/​

Just one Yak was shaved in the making of this newsletter.

113 Cherry St #92768, Seattle, WA 98104-2205
​Unsubscribe · Preferences​

Don't miss what's next. Subscribe to The Resource:
Powered by Buttondown, the easiest way to start and grow your newsletter.