Hi,
I've a question on the rebalance.
We're tiering data from operational storage to archive and ran in to some issue on the archive part. Our archive needs to store data (geo)redundant. And the first option was to let our cloud provider do the geo replication. So iRODS would have to do this. Turns out there are some issues that make this impossible to do this. So I now need to do this in iRODS.
Complicating factor there is already data offloaded to the archive because of space issue on the operational storage.
So i guessed that I could add the existing storage resource to a replication resource and add the second resource that writes data to the other geo location.
So my tree now looks like this.
res-01-store04:passthru
└── res-01-pt04:passthru
└── res-01-repl04:replication
├── res-01-repl04-pt04a:passthru
│ └── res-01-04a:unixfilesystem
└── res-01-repl04-pt04b:passthru
└── res-01-04b:unixfilesystem
Where res-01-04a is the original resource and res-01-04b is the newly added in combination with the upper replication resource.
For new data this works fine. New files are written to both resources.
But there is an issue with the old data.
From the docs I understand that the rebalance command can solve this en replicate the data from the res-01-04a to the res-01-04b so the end up in sync. (Is this correct to begin with?)
If so then the following:
So I tried the rebalance command for this and that crashes with the following error.
iadmin modresc res-01-store04 rebalance
remote addresses: 172.31.32.83 ERROR: rcGeneralAdmin failed with error -808000 CAT_NO_ROWS_FOUND
In the log file i found this line:
select DATA_NAME, COLL_NAME, DATA_MODE, DATA_RESC_ID where DATA_ID = '1334243' and DATA_RESC_ID IN ('538280','79878534'
The rescid 538280 is the res-01-04a and 79878534 is the res-01-04b
Offcourse this query will result in 0 rows, because the data is not yet on the 79878534/res-01-04b resource
So should you be able to use the rebalance for this? And if not how can this be done?
Thanks!
Jan de Graaf
NKI
Log file:
{"log_category":"legacy","log_level":"error","log_message":"iRODS Exception:
file: /irods_source/plugins/resources/replication/src/irods_repl_rebalance.cpp
function: (anonymous namespace)::ReplicationSourceInfo (anonymous namespace)::get_source_data_object_attributes(rsComm_t *, const rodsLong_t, const std::vector<leaf_bundle_t> &)
line: 129
code: -808000 (CAT_NO_ROWS_FOUND)
message:
rsGenQuery failed. genquery_inp contents:
maxRows: 256 continueInx: 0 rowOffset: 0
options: 0
selectInp.len: 4
column: 403 DATA_NAME
options: 1
column: 501 COLL_NAME
options: 1
column: 421 DATA_MODE
options: 1
column: 423 DATA_RESC_ID
options: 1
sqlCondInp.len: 3
column: 401 DATA_ID
condition: = '1334243'
column: 423 DATA_RESC_ID
condition: IN ('538280','79878534')
column: 413 DATA_REPL_STATUS
condition: = '1'
possible iquest [select DATA_NAME, COLL_NAME, DATA_MODE, DATA_RESC_ID where DATA_ID = '1334243' and DATA_RESC_ID IN ('538280','79878534') and DATA_REPL_STATUS = '1']
: [-]\t/irods_source/plugins/resources/src/passthru.cpp:849:irods::error passthru_file_rebalance(irods::plugin_context &) : status [CAT_NO_ROWS_FOUND] errno [] -- message []
stack trace:
--------------
0# irods::stacktrace::dump() const in /lib/libirods_common.so.4.3.1
1# irods::exception::assemble_full_display_what() const in /lib/libirods_common.so.4.3.1
2# irods::exception::what() const in /lib/libirods_common.so.4.3.1
3# irods::error::result() const in /lib/libirods_common.so.4.3.1
4# irods::log(irods::error const&) in /lib/libirods_common.so.4.3.1
5# passthru_file_rebalance(irods::plugin_context&) in /usr/lib/irods/plugins/resources/libpassthru.so
6# std::__1::__function::__func<irods::error (*)(irods::plugin_context&), std::__1::allocator<irods::error (*)(irods::plugin_context&)>, irods::error (irods::plugin_context&)>::operator()(irods::plugin_context&) in /lib/libirods_server.so.4.3.1
7# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const in /lib/libirods_server.so.4.3.1
8# std::__1::__function::__func<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*), std::__1::allocator<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>, irods::error (irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*&&) in /lib/libirods_server.so.4.3.1
9# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>) in /lib/libirods_server.so.4.3.1
10# passthru_file_rebalance(irods::plugin_context&) in /usr/lib/irods/plugins/resources/libpassthru.so
11# std::__1::__function::__func<irods::error (*)(irods::plugin_context&), std::__1::allocator<irods::error (*)(irods::plugin_context&)>, irods::error (irods::plugin_context&)>::operator()(irods::plugin_context&) in /lib/libirods_server.so.4.3.1
12# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const in /lib/libirods_server.so.4.3.1
13# std::__1::__function::__func<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*), std::__1::allocator<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>, irods::error (irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*&&) in /lib/libirods_server.so.4.3.1
14# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>) in /lib/libirods_server.so.4.3.1
15# _rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
16# rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
17# irods::api_call_adaptor<GeneralAdminInput*>::operator()(irods::plugin_context&, RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
18# std::__1::__function::__func<irods::api_call_adaptor<GeneralAdminInput*>, std::__1::allocator<irods::api_call_adaptor<GeneralAdminInput*> >, irods::error (irods::plugin_context&, RsComm*, GeneralAdminInput*)>::operator()(irods::plugin_context&, RsComm*&&, GeneralAdminInput*&&) in /lib/libirods_server.so.4.3.1
19# int irods::api_entry::call_handler<GeneralAdminInput*>(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
20# rsApiHandler(RsComm*, int, BytesBuf*, BytesBuf*) in /lib/libirods_server.so.4.3.1
21# readAndProcClientMsg(RsComm*, int) in /lib/libirods_server.so.4.3.1
22# agentMain(RsComm*) in /lib/libirods_server.so.4.3.1
23# runIrodsAgentFactory(sockaddr_un) in /lib/libirods_server.so.4.3.1
24# main::$_5::operator()() const at rodsServer.cpp:?
25# main in /usr/sbin/irodsServer
26# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
27# _start in /usr/sbin/irodsServer
","request_api_name":"GENERAL_ADMIN_AN","request_api_number":701,"request_api_version":"d","request_client_user":"rods","request_host":"172.31.32.83","request_proxy_user":"rods","request_release_version":"rods4.3.1","server_host":"p-irods-001","server_pid":3315516,"server_timestamp":"2025-03-13T10:38:21.009Z","server_type":"agent","server_zone":"nki"}
{"log_category":"legacy","log_level":"error","log_message":"iRODS Exception:
file: /irods_source/plugins/resources/replication/src/irods_repl_rebalance.cpp
function: (anonymous namespace)::ReplicationSourceInfo (anonymous namespace)::get_source_data_object_attributes(rsComm_t *, const rodsLong_t, const std::vector<leaf_bundle_t> &)
line: 129
code: -808000 (CAT_NO_ROWS_FOUND)
message:
rsGenQuery failed. genquery_inp contents:
maxRows: 256 continueInx: 0 rowOffset: 0
options: 0
selectInp.len: 4
column: 403 DATA_NAME
options: 1
column: 501 COLL_NAME
options: 1
column: 421 DATA_MODE
options: 1
column: 423 DATA_RESC_ID
options: 1
sqlCondInp.len: 3
column: 401 DATA_ID
condition: = '1334243'
column: 423 DATA_RESC_ID
condition: IN ('538280','79878534')
column: 413 DATA_REPL_STATUS
condition: = '1'
possible iquest [select DATA_NAME, COLL_NAME, DATA_MODE, DATA_RESC_ID where DATA_ID = '1334243' and DATA_RESC_ID IN ('538280','79878534') and DATA_REPL_STATUS = '1']
: [-]\t/irods_source/plugins/resources/src/passthru.cpp:855:irods::error passthru_file_rebalance(irods::plugin_context &) : status [CAT_NO_ROWS_FOUND] errno [] -- message []
: [-]\t/irods_source/plugins/resources/src/passthru.cpp:849:irods::error passthru_file_rebalance(irods::plugin_context &) : status [CAT_NO_ROWS_FOUND] errno [] -- message []
stack trace:
--------------
0# irods::stacktrace::dump() const in /lib/libirods_common.so.4.3.1
1# irods::exception::assemble_full_display_what() const in /lib/libirods_common.so.4.3.1
2# irods::exception::what() const in /lib/libirods_common.so.4.3.1
3# irods::error::result() const in /lib/libirods_common.so.4.3.1
4# irods::log(irods::error const&) in /lib/libirods_common.so.4.3.1
5# passthru_file_rebalance(irods::plugin_context&) in /usr/lib/irods/plugins/resources/libpassthru.so
6# std::__1::__function::__func<irods::error (*)(irods::plugin_context&), std::__1::allocator<irods::error (*)(irods::plugin_context&)>, irods::error (irods::plugin_context&)>::operator()(irods::plugin_context&) in /lib/libirods_server.so.4.3.1
7# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const in /lib/libirods_server.so.4.3.1
8# std::__1::__function::__func<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*), std::__1::allocator<irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>)::'lambda'(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>, irods::error (irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)>::operator()(irods::plugin_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*&&) in /lib/libirods_server.so.4.3.1
9# irods::error irods::plugin_base::call<>(RsComm*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::shared_ptr<irods::first_class_object>) in /lib/libirods_server.so.4.3.1
10# _rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
11# rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
12# irods::api_call_adaptor<GeneralAdminInput*>::operator()(irods::plugin_context&, RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
13# std::__1::__function::__func<irods::api_call_adaptor<GeneralAdminInput*>, std::__1::allocator<irods::api_call_adaptor<GeneralAdminInput*> >, irods::error (irods::plugin_context&, RsComm*, GeneralAdminInput*)>::operator()(irods::plugin_context&, RsComm*&&, GeneralAdminInput*&&) in /lib/libirods_server.so.4.3.1
14# int irods::api_entry::call_handler<GeneralAdminInput*>(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
15# rsApiHandler(RsComm*, int, BytesBuf*, BytesBuf*) in /lib/libirods_server.so.4.3.1
16# readAndProcClientMsg(RsComm*, int) in /lib/libirods_server.so.4.3.1
17# agentMain(RsComm*) in /lib/libirods_server.so.4.3.1
18# runIrodsAgentFactory(sockaddr_un) in /lib/libirods_server.so.4.3.1
19# main::$_5::operator()() const at rodsServer.cpp:?
20# main in /usr/sbin/irodsServer
21# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
22# _start in /usr/sbin/irodsServer
","request_api_name":"GENERAL_ADMIN_AN","request_api_number":701,"request_api_version":"d","request_client_user":"rods","request_host":"172.31.32.83","request_proxy_user":"rods","request_release_version":"rods4.3.1","server_host":"p-irods-001","server_pid":3315516,"server_timestamp":"2025-03-13T10:38:21.749Z","server_type":"agent","server_zone":"nki"}
{"log_category":"legacy","log_level":"error","log_message":"iRODS Exception:
file: /irods_source/plugins/resources/replication/src/irods_repl_rebalance.cpp
function: (anonymous namespace)::ReplicationSourceInfo (anonymous namespace)::get_source_data_object_attributes(rsComm_t *, const rodsLong_t, const std::vector<leaf_bundle_t> &)
line: 129
code: -808000 (CAT_NO_ROWS_FOUND)
message:
rsGenQuery failed. genquery_inp contents:
maxRows: 256 continueInx: 0 rowOffset: 0
options: 0
selectInp.len: 4
column: 403 DATA_NAME
options: 1
column: 501 COLL_NAME
options: 1
column: 421 DATA_MODE
options: 1
column: 423 DATA_RESC_ID
options: 1
sqlCondInp.len: 3
column: 401 DATA_ID
condition: = '1334243'
column: 423 DATA_RESC_ID
condition: IN ('538280','79878534')
column: 413 DATA_REPL_STATUS
condition: = '1'
possible iquest [select DATA_NAME, COLL_NAME, DATA_MODE, DATA_RESC_ID where DATA_ID = '1334243' and DATA_RESC_ID IN ('538280','79878534') and DATA_REPL_STATUS = '1']
: [-]\t/irods_source/plugins/resources/src/passthru.cpp:855:irods::error passthru_file_rebalance(irods::plugin_context &) : status [CAT_NO_ROWS_FOUND] errno [] -- message []
: [-]\t/irods_source/plugins/resources/src/passthru.cpp:855:irods::error passthru_file_rebalance(irods::plugin_context &) : status [CAT_NO_ROWS_FOUND] errno [] -- message []
failed to rebalance resource: [-]\t/irods_source/server/api/src/rsGeneralAdmin.cpp:1100:int _rsGeneralAdmin(rsComm_t *, generalAdminInp_t *) : status [CAT_NO_ROWS_FOUND] errno [] -- message [failed to rebalance resource]
stack trace:
--------------
0# irods::stacktrace::dump() const in /lib/libirods_common.so.4.3.1
1# irods::exception::assemble_full_display_what() const in /lib/libirods_common.so.4.3.1
2# irods::exception::what() const in /lib/libirods_common.so.4.3.1
3# irods::error::result() const in /lib/libirods_common.so.4.3.1
4# irods::log(irods::error const&) in /lib/libirods_common.so.4.3.1
5# _rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
6# rsGeneralAdmin(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
7# irods::api_call_adaptor<GeneralAdminInput*>::operator()(irods::plugin_context&, RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
8# std::__1::__function::__func<irods::api_call_adaptor<GeneralAdminInput*>, std::__1::allocator<irods::api_call_adaptor<GeneralAdminInput*> >, irods::error (irods::plugin_context&, RsComm*, GeneralAdminInput*)>::operator()(irods::plugin_context&, RsComm*&&, GeneralAdminInput*&&) in /lib/libirods_server.so.4.3.1
9# int irods::api_entry::call_handler<GeneralAdminInput*>(RsComm*, GeneralAdminInput*) in /lib/libirods_server.so.4.3.1
10# rsApiHandler(RsComm*, int, BytesBuf*, BytesBuf*) in /lib/libirods_server.so.4.3.1
11# readAndProcClientMsg(RsComm*, int) in /lib/libirods_server.so.4.3.1
12# agentMain(RsComm*) in /lib/libirods_server.so.4.3.1
13# runIrodsAgentFactory(sockaddr_un) in /lib/libirods_server.so.4.3.1
14# main::$_5::operator()() const at rodsServer.cpp:?
15# main in /usr/sbin/irodsServer
16# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
17# _start in /usr/sbin/irodsServer
","request_api_name":"GENERAL_ADMIN_AN","request_api_number":701,"request_api_version":"d","request_client_user":"rods","request_host":"172.31.32.83","request_proxy_user":"rods","request_release_version":"rods4.3.1","server_host":"p-irods-001","server_pid":3315516,"server_timestamp":"2025-03-13T10:38:22.292Z","server_type":"agent","server_zone":"nki"}
{"log_category":"api","log_level":"info","log_message":"rsGeneralAdmin: rcGeneralAdmin error -808000","request_api_name":"GENERAL_ADMIN_AN","request_api_number":701,"request_api_version":"d","request_client_user":"rods","request_host":"172.31.32.83","request_proxy_user":"rods","request_release_version":"rods4.3.1","server_host":"p-irods-001","server_pid":3315516,"server_timestamp":"2025-03-13T10:38:22.335Z","server_type":"agent","server_zone":"nki"}