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.

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
https://www.youtube.com/watch?v=GOBLtZiuwQw
and HIPAA compliant environmentsGuest:
Nirav Merchant, University of Arizona / CyVerseHosts:
Terrell Russell, iRODS Consortium
Marco Merkel, Do IT NowCard: - 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.0This release expands support for secure communication and improves retrieval
of permission information when using the high-level filesystem API.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-57QCard: 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 ConsortiumThe 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#L1850R_USER_CREDENTIALSnot created on upgradeState: 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_delayExecState: 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->msParamArray );
+ clearMsParamArray(rei->msParamArray, 1);
+ // NOLINTNEXTLINE(cppcoreguidelines-owning-memory, cppcoreguidelines-no-malloc)
+ std::free(rei->msParamArray);
rei->msParamArray = tmp;
if ( i < 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_usersState: 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_r2581505103CRC64NVME Polynomial in comment is incorrect
State: open
Labels: bug, documentation
Description:
comment forcrc_polynomialinCRC64NVMEStrategy.cppexplains 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 + 1is not correct and does not correspond
to0xAD93D23594C93659(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^46x^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 in0xAD93D23594C93659`, 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:
Closed on 2025-12-10:
ASAN:
SEGVin packStruct crashes main serverClosed 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:
Closed on 2025-12-08:
GenQuery2: Expose user type through permission-related columns
Closed on 2025-12-08:
Closed on 2025-11-18:
execCmd.h(inlib/api)#includesrodsConnect.h(inserver/core)Closed on 2025-11-18:
bulkProcAndRegSubfilehas redundant checksum verificationClosed on 2025-11-18:
NAME_LENused whereCHKSUM_LENshould be used in many placesClosed on 2025-11-18:
Closed on 2025-12-05:
Closed on 2025-12-09:
Closed on 2025-12-03:
Closed on 2025-12-10:
FILE_CREATE_ERR[File exists] when attempt to iput big file to replicate resource
Closed on 2025-12-09:
Closed on 2025-12-09:
Closed on 2025-12-03:
Do not check logs in
test_native_rule_engine_plugin.Test_Native_Rule_Engine_Plugin.test_network_pepClosed on 2025-11-21:
Main server process occasionally crashes (SIGSEGV) in
migrate_delay_serverClosed on 2025-12-10:
Closed on 2025-12-09:
Closed on 2025-12-10:
Closed on 2025-12-10:
Closed on 2025-11-21:
Closed on 2025-12-05:
Python iRODS Client (irods/python-irodsclient)
Open Issues – irods/python-irodsclient
Investigate running tests with
-Werrorto catch deprecated functionalityState: open
Labels: testing
Description: This would alert us to potential issues before a release.Add support for new
irodsauthentication schemeState: open
Labels: enhancement
Description:
details: - https://github.com/irods/irods/issues/8697 -
https://github.com/irods/irods/commit/76a6ba12936e55e02ae02a23ecbdc286e78c9714State: open
Labels: documentation
Description:
discuss #783 and whether appropriate for this milestone
Closed Issues – irods/python-irodsclient
Closed on 2025-11-24:
Closed on 2025-11-24:
Closed on 2025-11-24:
Closed on 2025-11-24:
Closed on 2025-11-24:
Closed on 2025-11-25:
Closed on 2025-12-10:
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 yusuf02So: - 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
irodsauthentication schemeState: 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:
Java Client Library (irods/irods4j)
Open Issues – irods/irods4j
Add support for new
irodsauthentication schemeState: open
Labels: enhancement
Description:
details: - https://github.com/irods/irods/issues/8697 -
https://github.com/irods/irods/commit/76a6ba12936e55e02ae02a23ecbdc286e78c9714State: 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:
Closed on 2025-12-03:
Closed on 2025-12-03:
IRODSFilesystem: Reduce chances for truncating permission listing
Closed on 2025-12-03:
Closed on 2025-12-03:
Closed on 2025-12-03:
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:
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.