The Resource logo

The Resource

Archives
Subscribe
December 18, 2025

The Resource For December 2025

"iRODS updates, cybersecurity focus, password security tips, and debunking cybersecurity myths in this month's newsletter!"

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

Click here to read this email on the web.

a sherlock holmes robot with a santa hat on, having a earnest discussion with a cybernetic reindeer who is actually a Yak in disguise

The end of 2025! I hope you are winding down for the year, and that your iRODS systems stay well behaved over the christmas period, especially if you are on-call.

Normally in December I try and do some of the Advent Of Code challenges, but this year, with my increased focus on Cybersecurity, I have turned to Advent of Cyber. If you are interested in learning more about cybersecurity, I highly recommend it. It's free, and there are challenges for all skill levels.

I reposed an article on LinkedIn around using Password Managers for securing Variables, and moving away from .env files, which might be of interest to the community, if you are not already using this approach.

On the subject of Cybersecurity, there are some myths that go around, and I boosted a post by a famous cybersecurity expert where (a group has gathered to debunk them)[https://www.linkedin.com/posts/john-constable-uk_stop-hacklore-activity-7399077173627756544-WL7u?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAKvfSQBn5ysqvfky6NhQv8vL0JlQm_JaxI].

Not to turn this into a Cybersecurity newsletter, but it seemed for me, and in the UK at least, November and December are the months when Cybersecurity gets loads of conferences so I attended a couple and put my write ups on LinkedIn & Medium if you are interested;

  • ISC2 LinkedIn / ISC2 Medium / ISC2 Medium, no account needed

  • Octane On The Road Conference Report - OKTA and AUth0 - worth a read if you're looking at securing MCP systems and Agents, particularly after the talk below! / Medium version / Medium version, no account needed


iRODSNews

Mastodon Toots

  • iRODS Development Update: December 2025

    The final update of the year. Happy Holidays everyone.

    [https://irods.org/2025/12/irods-development-update-
    december-2025/](https://irods.org/2025/12/irods-development-update-
    december-2025/)

    Card: iRODS
    Description: The final update of the year. Happy Holidays everyone.

    Ensuring Data Security: iRODS strategies for enabling agentic access in FIPS
    and HIPAA compliant environments

    https://www.youtube.com/watch?v=GOBLtZiuwQw

    Guest:
    Nirav Merchant, University of Arizona / CyVerse

    Hosts:
    Terrell Russell, iRODS Consortium
    Marco Merkel, Do IT Now

    Card: - YouTube
    Description: Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

  • iRODS Java Library irods4j v0.6.0 is released!

    https://github.com/irods/irods4j/releases/tag/0.6.0

    This release expands support for secure communication and improves retrieval
    of permission information when using the high-level filesystem API.

    #irods
    #java

    Card: Release 0.6.0 · irods/irods4j
    Description: This release expands support for secure communication and improves retrieval of permission information when using the high-level filesystem API.

  • TRiRODS - December 2025

    Easy iRODS Metrics: SQL Exporter, Prometheus, and Grafana

    https://www.youtube.com/watch?v=IWKrd5b-57Q

    Card: TRiRODS: Easy iRODS Metrics: SQL Exporter, Prometheus, and Grafana

  • TRiRODS - Wed, Dec 3, 4p ET

    Easy iRODS Metrics: SQL Exporter, Prometheus, and Grafana
    Speaker: Terrell Russell, iRODS Consortium

    The irods_demo repository has recently added some dashboarding to show basic
    time-series information about an iRODS zone. It uses three open-source tools
    to query the iRODS catalog, export a set of values periodically, and then
    graph the results.

    Card: iRODS

GitHub Activity

Main Repository (irods/irods)

Open Issues – irods/irods

  • Remove calculation queries for per-user quotas

    State: open
    Labels: deprecation / removal
    Description:
    calculations, their associated queries should also be deleted. List of
    known per-user quota queries (list may not be exhaustive):
    https://github.com/irods/irods/blob/d1d1af04f15d5670b3310a928afad6683161689f/plugins/database/src/db_plugin.cpp#L1530
    https://github.com/irods/irods/blob/d1d1af04f15d5670b3310a928afad6683161689f/plugins/database/src/general_query.cpp#L1791
    https://github.com/irods/irods/blob/d1d1af04f15d5670b3310a928afad6683161689f/plugins/database/src/general_query.cpp#L1850

  • R_USER_CREDENTIALS not created on upgrade

    State: open
    Labels: bug, upgrade
    Description: ## Bug Report

iRODS Version, OS and Version

5.0.90

Need to add R_USER_CREDENTIALS table on upgrade.

See https://github.com/irods/irods/issues/8697#issuecomment-3618952832

  • ASAN: Leak in smsi_delayExec

    State: open
    Labels: bug
    Description: ## Bug Report

iRODS Version, OS and Version

4.3.4, Ubuntu 22.04

What did you try to do?

Ran AddressSANitizer (ASAN) test script as part of the efforts for #8334.

Expected behavior

No leaks.

Observed Behavior (including steps to reproduce, if applicable)

While most of the leaks are addressed in #8334, there was one that I did not feel comfortable addressing without further investigation, which is why I opened this issue. Here is the ASAN report from the server:

=================================================================
==31357==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 8 byte(s) in 2 object(s) allocated from:
    #0 0x515d77 in malloc /externals/clang13.0.1-0_src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x76f60533d708 in convertResToMsParam(MsParam*, node*, ErrorStack*) /irods_source/plugins/rule_engines/irods_rule_language/src/conversion.cpp:369:37
    #2 0x76f60533e3cb in convertHashtableToMsParamArray(MsParamArray*, hashtable*, ErrorStack*) /irods_source/plugins/rule_engines/irods_rule_language/src/conversion.cpp:494:23
    #3 0x76f60533e16b in convertEnvToMsParamArray(MsParamArray*, env*, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/conversion.cpp:471:12
    #4 0x76f60548bc94 in smsi_delayExec(node**, int, node*, RuleExecInfo*, int, env*, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/functions.cpp:1870:15
    #5 0x76f6052ce38e in evaluateFunction3(node*, int, node*, env*, RuleExecInfo*, int, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/arithmetics.cpp:816:29
    #6 0x76f6052cfad0 in evaluateFunctionApplication(node*, node*, int, node*, RuleExecInfo*, int, env*, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/arithmetics.cpp:593:19
    #7 0x76f6052cc544 in evaluateExpression3(node*, int, int, RuleExecInfo*, int, env*, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/arithmetics.cpp
    #8 0x76f6052cfe94 in evaluateActions(node*, node*, int, RuleExecInfo*, int, env*, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/arithmetics.cpp:520:19
    #9 0x76f6052d6e80 in execRuleNodeRes(node*, node**, unsigned int, int, env*, RuleExecInfo*, int, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/arithmetics.cpp:1502:25
    #10 0x76f605461bc5 in parseAndComputeRule(char*, env*, RuleExecInfo*, int, ErrorStack*, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/rules.cpp:281:11
    #11 0x76f6054613f5 in parseAndComputeRuleAdapter(char*, MsParamArray*, RuleExecInfo*, int, region*) /irods_source/plugins/rule_engines/irods_rule_language/src/rules.cpp:168:15
    #12 0x76f60534995d in execMyRuleWithSaveFlag(char*, MsParamArray*, char const*, RuleExecInfo*, int) /irods_source/plugins/rule_engines/irods_rule_language/src/nre.reLib1.cpp:316:9
    #13 0x76f60534966b in execMyRule(char*, MsParamArray*, char const*, RuleExecInfo*) /irods_source/plugins/rule_engines/irods_rule_language/src/nre.reLib1.cpp:243:12
    #14 0x76f6054a3751 in exec_rule_text(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback) /irods_source/plugins/rule_engines/irods_rule_language/src/irods_rule_language.cpp:357:24
    #15 0x76f6054be650 in decltype(static_cast<irods::error (*&>(fp)(static_cast<std::__1::tuple<>&>(fp0), static_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(fp0), static_cast<MsParamArray*>(fp0), static_cast<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(fp0), static_cast<irods::callback>(fp0))) std::__1::__invoke<irods::error (*&)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback>(irods::error (*&)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/type_traits:3934:1
    #16 0x76f6054be650 in irods::error std::__1::__invoke_void_return_wrapper<irods::error, false>::__call<irods::error (*&)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback>(irods::error (*&)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/invoke.h:30:16
    #17 0x76f6054be650 in std::__1::__function::__alloc_func<irods::error (*)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::allocator<irods::error (*)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>, irods::error (std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>::operator()(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:171:16
    #18 0x76f6054be650 in std::__1::__function::__func<irods::error (*)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback), std::__1::allocator<irods::error (*)(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>, irods::error (std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>::operator()(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:345:12
    #19 0x76f60b6f5b5e in std::__1::__function::__value_func<irods::error (std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>::operator()(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback&&) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:498:16
    #20 0x76f60b6f5b5e in std::__1::function<irods::error (std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback)>::operator()(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:1175:12
    #21 0x76f60b6f5b5e in irods::pluggable_rule_engine<std::__1::tuple<> >::exec_rule_text(std::__1::tuple<>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, irods::callback) /irods_source/server/re/include/irods/irods_re_plugin.hpp:253:24
    #22 0x76f60b6f3ba1 in irods::rule_engine_context_manager<std::__1::tuple<>, RuleExecInfo*, (irods::rule_execution_manager_pack)0>::exec_rule_text(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, MsParamArray*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /irods_source/server/re/include/irods/irods_re_plugin.hpp:606:41
    #23 0x76f60b6f27d2 in rsExecMyRule(RsComm*, ExecMyRuleInp*, MsParamArray**) /irods_source/server/api/src/rsExecMyRule.cpp:96:35
    #24 0x76f60c0339e5 in decltype(static_cast<int (*&>(fp)(static_cast<RsComm*>(fp0), static_cast<ExecMyRuleInp*>(fp0), static_cast<MsParamArray**>(fp0))) std::__1::__invoke<int (*&)(RsComm*, ExecMyRuleInp*, MsParamArray**), RsComm*, ExecMyRuleInp*, MsParamArray**>(int (*&)(RsComm*, ExecMyRuleInp*, MsParamArray**), RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/type_traits:3934:1
    #25 0x76f60c0339e5 in int std::__1::__invoke_void_return_wrapper<int, false>::__call<int (*&)(RsComm*, ExecMyRuleInp*, MsParamArray**), RsComm*, ExecMyRuleInp*, MsParamArray**>(int (*&)(RsComm*, ExecMyRuleInp*, MsParamArray**), RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/invoke.h:30:16
    #26 0x76f60c0339e5 in std::__1::__function::__alloc_func<int (*)(RsComm*, ExecMyRuleInp*, MsParamArray**), std::__1::allocator<int (*)(RsComm*, ExecMyRuleInp*, MsParamArray**)>, int (RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:171:16
    #27 0x76f60c0339e5 in std::__1::__function::__func<int (*)(RsComm*, ExecMyRuleInp*, MsParamArray**), std::__1::allocator<int (*)(RsComm*, ExecMyRuleInp*, MsParamArray**)>, int (RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:345:12
    #28 0x76f60bdadc96 in std::__1::__function::__value_func<int (RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:498:16
    #29 0x76f60bdadc96 in std::__1::function<int (RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(RsComm*, ExecMyRuleInp*, MsParamArray**) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:1175:12
    #30 0x76f60bdadc96 in irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>::operator()(irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**) /irods_source/lib/core/include/irods/apiHandler.hpp:125:23
    #31 0x76f60bdada6a in decltype(static_cast<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>&>(fp)(static_cast<irods::plugin_context&>(fp0), static_cast<RsComm*>(fp0), static_cast<ExecMyRuleInp*>(fp0), static_cast<MsParamArray**>(fp0))) std::__1::__invoke<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>&, irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**>(irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>&, irods::plugin_context&, RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/type_traits:3934:1
    #32 0x76f60bdada6a in irods::error std::__1::__invoke_void_return_wrapper<irods::error, false>::__call<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>&, irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**>(irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>&, irods::plugin_context&, RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/invoke.h:30:16
    #33 0x76f60bdada6a in std::__1::__function::__alloc_func<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>, std::__1::allocator<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**> >, irods::error (irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(irods::plugin_context&, RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:171:16
    #34 0x76f60bdada6a in std::__1::__function::__func<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**>, std::__1::allocator<irods::api_call_adaptor<ExecMyRuleInp*, MsParamArray**> >, irods::error (irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(irods::plugin_context&, RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:345:12
    #35 0x76f60ba82c01 in std::__1::__function::__value_func<irods::error (irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(irods::plugin_context&, RsComm*&&, ExecMyRuleInp*&&, MsParamArray**&&) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:498:16
    #36 0x76f60ba82c01 in std::__1::function<irods::error (irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**)>::operator()(irods::plugin_context&, RsComm*, ExecMyRuleInp*, MsParamArray**) const /opt/irods-externals/clang13.0.1-0/include/c++/v1/__functional/function.h:1175:12
    #37 0x76f60ba82c01 in int irods::api_entry::call_handler<ExecMyRuleInp*, MsParamArray**>(RsComm*, ExecMyRuleInp*, MsParamArray**) /irods_source/lib/core/include/irods/apiHandler.hpp:225:30
    #38 0x76f60b95ecb8 in call_execMyRuleInp_msParamArrayOut(irods::api_entry*, RsComm*, ExecMyRuleInp*, MsParamArray**) /irods_source/server/core/src/irods_api_calling_functions.cpp:701:18
    #39 0x76f60c12a0d7 in rsApiHandler(RsComm*, int, BytesBuf*, BytesBuf*) /irods_source/server/core/src/rsApiHandler.cpp:213:18
    #40 0x76f60c130ca9 in readAndProcClientMsg(RsComm*, int) /irods_source/server/core/src/rsApiHandler.cpp:601:18
    #41 0x76f60c0ef58b in agentMain(RsComm*) /irods_source/server/core/src/rodsAgent.cpp:863:18
    #42 0x76f60c0ea695 in runIrodsAgentFactory(sockaddr_un) /irods_source/server/core/src/rodsAgent.cpp:730:14
    #43 0x563d13 in main::$_5::operator()() const /irods_source/server/main_server/src/rodsServer.cpp:1341:37
    #44 0x555c1d in main /irods_source/server/main_server/src/rodsServer.cpp:1408:5

SUMMARY: AddressSanitizer: 8 byte(s) leaked in 2 allocation(s).

The fix that I had initially implemented looks like this:

--- a/plugins/rule_engines/irods_rule_language/src/functions.cpp
+++ b/plugins/rule_engines/irods_rule_language/src/functions.cpp
@@ -1875,9 +1875,7 @@ Res *smsi_delayExec( Node** paramsr, int, Node* node, ruleExecInfo_t* rei, int,

     i = _delayExec( actionCall, recoveryActionCall, delayCondition, rei );

-    deleteMsParamArray( rei-&gt;msParamArray );
+    clearMsParamArray(rei-&gt;msParamArray, 1);
+    // NOLINTNEXTLINE(cppcoreguidelines-owning-memory, cppcoreguidelines-no-malloc)
+    std::free(rei-&gt;msParamArray);
     rei-&gt;msParamArray = tmp;

     if ( i &lt; 0 ) {

The 1 parameter passed to clearMsParamArray indicates that the inOutStructs should be freed as well. While this fixed the leak and things appear to be working as expected, I don't fully understand how this will interact with things like cross-REP calls (think: PREP or indexing). We should make sure we fully understand what this does before we commit it.

Also... it's 8 bytes.

iRODS Server Logs (if applicable)

N/A

  • Logical locking shoud include agent information

    State: open
    Labels: enhancement, consortium-member
    Description: ### New Feature / Functionality

In our irods installation we regularly see HIERARCHY_ERRORS pop up, and they need a lot of manual labour to follow up and repair. The reason is mostly a bad behaving client or a crashing irods agent. Our main concern is to identify easily which data objects are really "locked": some data objects are currently being written to by a client (there is an existing agent holding the write lock), some data objects are left with data_status 2 (because the agent holding the lock crashed for various reasons).

I would suggest the following:

  • if a data object gets a write lock, information about the agent holding the lock will be stored in the catalog. This can be e.g. the irods server name + pid combination.

  • if the server detects that an agent crashes (e.g. because of network errors), it checks whether it was holding a write lock, and do some remediation (putting the file to stale, for example, or another state that allows users to reupload the file).

  • Show configuration for running iRODS server

    State: open
    Labels: enhancement, consortium-member
    Description: ### New Feature / Functionality

We have a way to see the server configuration file on each server in a zone: izonereport.

We have a way to validate the JSON configuration of a local server_config.json: irodsServer -c.

We do not have a way to see what configuration the running iRODS server is using and how it may differ from the local server_config.json file. This could indicate that the server needs to have its configuration reloaded in order to get the most up-to-date configuration from the file. I'm imagining this as another option for the irodsServer executable, but it could take another form.

Original request raised in Google Group here: https://groups.google.com/g/irod-chat/c/2QOkToKD5wQ/m/98a7L7vTAwAJ

  • Determinize test_remove_expired_session_tokens_for_all_users

    State: open
    Labels: testing
    Description:
    which updates the catalog directly to put tokens in an expired state. The
    test can be limited to the provider so that connecting to the catalog is
    easy. Originally posted by @korydraughn in
    https://github.com/irods/irods/pull/8732#discussion_r2581505103

  • CRC64NVME Polynomial in comment is incorrect

    State: open
    Labels: bug, documentation
    Description:
    comment for crc_polynomial in CRC64NVMEStrategy.cpp explains what the
    purpose of the polynomial is:
    https://github.com/irods/irods/blob/1a5670d157ce932cc2888d74bb29c831e2db53ae/lib/hasher/src/CRC64NVMEStrategy.cpp#L19-L25
    However, x^64 + x^4 + x^3 + x + 1 is not correct and does not correspond
    to 0xAD93D23594C93659 (which is correct). The correct polynomial is
    `x^64 + x^63 + x^61 + x^59 + x^56 + x^55 + x^52 + x^49 + x^48 + x^47 + x^46

    • x^44 + x^41 + x^37 + x^36 + x^34 + x^32 + x^31 + x^28 + x^26 + x^23 + x^22

    • x^19 + x^16 + x^13 + x^12 + x^10 + x^9 + x^6 + x^4 + x^3 + 1. This can be worked out by looking at the individual bits in 0xAD93D23594C93659`, and is also specified in figure 119 in section 5.2.1.3.1 on page 81 of the NVM Command Set Specification, revision 1.0d.

Closed Issues – irods/irods

  • Closed on 2025-12-10:

    Provider topology tests fail on tip of main

  • Closed on 2025-12-10:

    ASAN: SEGV in packStruct crashes main server

  • Closed on 2025-12-06:

    Resource type tests fail on Ubuntu 22.04 with CRC byteorder error

  • Closed on 2025-12-10:

    Resource quota violations apply indiscriminately if there is only one quota

  • Closed on 2025-12-10:

    Consumer topology tests fail on tip of main

  • Closed on 2025-12-08:

    GenQuery2: Expose user type through permission-related columns

  • Closed on 2025-12-08:

    Catch2 reports error during build due to name collision

  • Closed on 2025-11-18:

    execCmd.h (in lib/api) #includes rodsConnect.h (in server/core)

  • Closed on 2025-11-18:

    bulkProcAndRegSubfile has redundant checksum verification

  • Closed on 2025-11-18:

    NAME_LEN used where CHKSUM_LEN should be used in many places

  • Closed on 2025-11-18:

    sha512 hasher seems to be broken

  • Closed on 2025-12-05:

    Add new built-in authentication scheme

  • Closed on 2025-12-09:

    Getting invalid user when there is a '#' in user password

  • Closed on 2025-12-03:

    iadmin moduser type failing in some circumstances.

  • Closed on 2025-12-10:

    FILE_CREATE_ERR[File exists] when attempt to iput big file to replicate resource

  • Closed on 2025-12-09:

    provider crash after using SSL/TLS

  • Closed on 2025-12-09:

    Run Address Sanitizer

  • Closed on 2025-12-03:

    Do not check logs in test_native_rule_engine_plugin.Test_Native_Rule_Engine_Plugin.test_network_pep

  • Closed on 2025-11-21:

    Main server process occasionally crashes (SIGSEGV) in migrate_delay_server

  • Closed on 2025-12-10:

    irods_get_delay_rule_info execution failed

  • Closed on 2025-12-09:

    non-admin user can execute iclienthints command

  • Closed on 2025-12-10:

    Python: migrate optparse and getopt usage to argparse

  • Closed on 2025-12-10:

    Investigate removing dependency on kerberos header files

  • Closed on 2025-11-21:

    PAM auth with invalid user fails silently

  • Closed on 2025-12-05:

    No command line tool for nulling passwords

Python iRODS Client (irods/python-irodsclient)

Open Issues – irods/python-irodsclient

  • Investigate running tests with -Werror to catch deprecated functionality

    State: open
    Labels: testing
    Description: This would alert us to potential issues before a release.

  • Add support for new irods authentication scheme

    State: open
    Labels: enhancement
    Description:
    details: - https://github.com/irods/irods/issues/8697 -
    https://github.com/irods/irods/commit/76a6ba12936e55e02ae02a23ecbdc286e78c9714

  • release activities for 3.3.0

    State: open
    Labels: documentation
    Description:
    discuss #783 and whether appropriate for this milestone

Closed Issues – irods/python-irodsclient

  • Closed on 2025-11-24:

    add at least a nominal pyproject.toml in root of repository

  • Closed on 2025-11-24:

    Figure out why test spuriously fails

  • Closed on 2025-11-24:

    Remove the docker_build directory and its contents

  • Closed on 2025-11-24:

    Test automatically via Github actions

  • Closed on 2025-11-24:

    Document how to run the test suite

  • Closed on 2025-11-25:

    Investigate automating BATS tests

  • Closed on 2025-12-10:

    Support for Kerberos Authentication

NFSRODS (irods/irods_client_nfsrods)

Open Issues – irods/irods_client_nfsrods

  • Strange permission (and presentation) issues.

    State: open
    Labels: bug, consortium-member
    Description:
    the jar and configs in /opt/nfsrods. server.json looks like this:

    "irods_mount_point": "/HPC",
    "user_information_refresh_time_in_milliseconds": 3600000,
    "file_information_refresh_time_in_milliseconds": 1000,
    "user_access_refresh_time_in_milliseconds": 1000,
    "object_type_refresh_time_in_milliseconds": 300000,
    "user_permissions_refresh_time_in_milliseconds": 300000,
    "user_type_refresh_time_in_milliseconds": 300000,
    "list_operation_query_results_refresh_time_in_milliseconds": 30000,
    "allow_overwrite_of_existing_files": true,         "using_oracle_database":
    false     },      "irods_client": {         "zone": "HPC",         "host":
    "archive200.internal.anunna.wur.nl",         "port": 1247,
    "default_resource": "hot_1",         "ssl_negotiation_policy":
    "CS_NEG_DONT_CARE",         "connection_timeout_in_seconds": 600,
    "proxy_admin_account": {             "username": "login",
    "password": "pass"         }     } } ```   Mounting is successful: ```shell
    root@app-test:~# mkdir /nfsrods ; mount -o sec=sys -t nfs
    app-nfsrods0.internal.anunna.wur.nl:/ /nfsrods/ -vvv mount.nfs: timeout set
    for Fri Nov 28 13:59:32 2025 mount.nfs: trying text-based options
    'sec=sys,vers=4.2,addr=192.168.0.12,clientaddr=192.168.0.11' mount.nfs:
    mount(2): Protocol not supported mount.nfs: trying text-based options
    'sec=sys,vers=4,minorversion=1,addr=192.168.0.12,clientaddr=192.168.0.11'
    

    What we see is that folders are showing up duplicated and that the
    permissions are off:

    haars001@app-test:/nfsrods/GUESTS$ /bin/ls
    -latrh | grep -c prins089 28 haars001@app-test:/nfsrods/GUESTS$ /bin/ls
    -latrhd prins089 drwx------+ 1 haars001 nogroup 0 Nov 24 16:30 prins089
    haars001@app-test:/nfsrods/GUESTS$ nfs4_getfacl prins089 # file: prins089
    A::anunna_admins@:rwado A::prins089@:rwado A::root_irods@:rwado
    haars001@app-test:/nfsrods/GUESTS$ ls -n | tail drwx------+ 1 16825946 65534
    0 Jul  8 11:19 wanga01 drwx------+ 1 16825946 65534 0 Jul  8 11:23 wimutt01
    drwx------+ 1 16825946 65534 0 Jul  8 11:23 wimutt01 drwx------+ 1 16825946
    65534 0 Jul  8 11:23 wimutt01 drwx------+ 1 16825946 65534 0 Jul  8 11:23
    wimutt01 drwx------+ 1 16825946 65534 0 Jul  8 11:23 wimutt01 drwx------+ 1
    16825946 65534 0 Jul  8 11:26 yusuf01 drwx------+ 1 16825946 65534 0 Jul  8
    11:26 yusuf01 drwx------+ 1 16825946 65534 0 Jul  8 11:26 yusuf01
    drwx------+ 1 16825946 65534 0 Jul  8 11:26 yusuf02 
    

    So: - How can we fix the multiple outputs for a single folder? - How can we fix the permissions? As it is right now, we can't open it up to our users for security and UX reasons. P.S. My account is in anunna_admins, so that might explain how I can enter the fodler, but it doesn't explain the uid being put to my account.

Closed Issues – irods/irods_client_nfsrods

HTTP API Client (irods/irods_client_http_api)

Open Issues – irods/irods_client_http_api

  • Add support for new irods authentication scheme

    State: open
    Labels: enhancement
    Description:
    details: - https://github.com/irods/irods/issues/8697 -
    https://github.com/irods/irods/commit/76a6ba12936e55e02ae02a23ecbdc286e78c9714

Closed Issues – irods/irods_client_http_api

Demo Repository (irods/irods_demo)

Open Issues – irods/irods_demo

Closed Issues – irods/irods_demo

  • Closed on 2025-12-01:

    track data transfers in and out

Java Client Library (irods/irods4j)

Open Issues – irods/irods4j

  • Add support for new irods authentication scheme

    State: open
    Labels: enhancement
    Description:
    details: - https://github.com/irods/irods/issues/8697 -
    https://github.com/irods/irods/commit/76a6ba12936e55e02ae02a23ecbdc286e78c9714

  • GenQuery2: Enable improved code path once iRODS server exposes user type as permission-related column

    State: open
    Labels: enhancement
    Description:
    for details regarding the iRODS server. Below is the irods4j code to
    enable once it is supported by the server.
    https://github.com/irods/irods4j/blob/9442318dc46bb5841bf733f75e10a4c450764471/src/main/java/org/irods/irods4j/high_level/vfs/IRODSFilesystem.java#L1143-L1164

Closed Issues – irods/irods4j

  • Closed on 2025-12-04:

    Release activities for 0.6.0

  • Closed on 2025-12-03:

    IRODSFilesystem: GenQuery2 can include empty strings when user does not have permissions on a data object

  • Closed on 2025-12-03:

    IRODSFilesystem: Reduce chances for truncating permission listing

  • Closed on 2025-12-03:

    Investigate accepting x509 types for initializing SSL/TLS

  • Closed on 2025-12-03:

    Automate setup of PAM auth for testing

  • Closed on 2025-12-03:

    Use Docker to automate testing against iRODS

YODA (UtrechtUniversity/yoda)

Open Issues – UtrechtUniversity/yoda

Closed Issues – UtrechtUniversity/yoda

  • Closed on 2025-12-05:

    Progress bar in metadata form is empty after re-opening existing metadata

  • Closed on 2025-12-10:

    Add Deltares to the list of affiliations


If you think someone else would appreciate this newsletter, they can sign up.

If you don't want to get these emails any more, you can unsubscribe here.

Just one Yak was shaved in the making of this newsletter. Perhaps it was a reindeer in disguise.

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