When we upgraded the python-irodsclient to 3.3.0, this issue popup in our regression test.
The metadata manager keeps the admin flag value from the previous call, even from a different irods session.
from my_connect_method import connect
irods_json_file_normal_account = '(...)/.irods/norm_user_environment.json'
irods_json_file_admin_account = '(...) /.irods/admin_user_environment.json'
logical_path = '/ZONE/home/norm_user/a.txt'
meta_name, meta_value = 'att_name_39', 'att_value_39'
def set_metadata_with_normal_user():
session = connect(irods_json_file_normal_account)
data_object = session.data_objects.get(logical_path)
# As the admin flag is not set, it should be False?
data_object.metadata.set(meta_name, meta_value)
# To make it work ALWAYS, the admin flag needs to be set!
# data_object.metadata(admin=False).set(meta_name, meta_value)
def set_metadata_with_admin_user():
session = connect(irods_json_file_admin_account)
data_object = session.data_objects.get(logical_path)
data_object.metadata(admin=True).set(meta_name, meta_value)
# This order works:
# set_metadata_with_normal_user()
# set_metadata_with_admin_user()
# This order does not work
set_metadata_with_admin_user()
set_metadata_with_normal_user()
#
# python-irodsclient 3.3.0
# With 3.2.0 it works fine
#