-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Possible issue on restore request from a non-standard GLACIER storage class #2221
Comments
I notice the S3_STORAGE_CLASS is not documented in our README.md - we'll fix that. This is the code where the determination is made of whether the object is 'in glacier'... strings are defined: irods_resource_plugin_s3/s3_transport/src/s3_transport.cpp Lines 52 to 56 in 7190604
and then matched: irods_resource_plugin_s3/s3_transport/src/s3_transport.cpp Lines 81 to 98 in 7190604
The plugin is matching against the specific case-insensitive string 'GLACIER', as you've discovered. Are you requesting that the string to be matched be configurable? Separately... can the Scality Zenko server be configured to return a different |
First, thank you for your prompt reply. Concerning It is to be expected that in the future, some IRODS clients will use non-standard storage class. This parameter may also evolve in AWS s3 standards. Also, would it be possible for the glacier storage class to be configurable ? Or matching an additional custom GLACIER storage class ? This could be done through the configuration of the IRODS resource, or otherwise if necessary. |
If you cannot manipulate the non-standard I think the options are...
|
Summary
We are working on an on-site s3 storage system produced by
SCALITY ZENKO
, which implies certain specificities despite the fact that we are trying to respect the AWS s3 APIs as much as possible.We have noticed an error when trying to restore an object and after investigation it seems that the pluggin does not take into account the
S3_STORAGE_CLASS
variable when it has a value other thanGLACIER
, whereas our platform returns the value glacier-sc.Below are the commands executed and the investigations carried out
Problem detection
Creating a storage resource on our glacier storage class
Registering the existing object on the storage system in IRODS
Retrieve the object currently still present on the standard storage system
The command retrieved the object.
Retrieval of the object after asynchronous movement by our platform, on the ‘glacier-sc’ type storage space
/!\ The command didn't work
output:
remote addresses: 10.120.70.156 ERROR: getUtil: get error for ./irods-bucket02/irods-glacier-test.txt status = -703000 S3_GET_ERROR
Investigation
After a number of leads, we decided to retrieve the command instead of the platform so that we could influence the parameters returned. Our attention eventually turned to the
x-amz-storage-class
parameter.Modification of the IRODS resource for interaction with the fake server
iadmin modresc irods-bucket02-glacier-sc context "S3_DEFAULT_HOSTNAME=myVM:myport;S3_AUTH_FILE=/var/lib/irods/IRODS_qual.keys;S3_REGIONNAME=us-east-1;S3_PROTO=HTTP;HOST_MODE=cacheless_attached;S3_STORAGE_CLASS=glacier-sc;S3_RESTORATION_TIER=Standard;S3_RESTORATION_DAYS=1"
Investigations on
x-amz-storage-class = glacier-sc
Result of successive commands sent by the plugin to the server
Here we notice that the plugin sends a first Head request and then follows up with a GET request despite the particular
glacier-sc
storage classInvestigations on
x-amz-storage-class = GLACIER
Result of successive commands sent by the plugin to the server
Here we notice that the plugin sends a first Head request and then follows up with a POST restore request when the storage class is
GLACIER
.Conclusion
Our conclusion is as follows, when we modify the value of the x-amz-storage-class parameter returned by the server for GLACIER as per the AWS standard, a restore POST request is sent. Otherwise, a GET request is sent directly after the HEAD, which leads to an error.
Can you tell us whether it is currently possible to restore data on a storage class other than GLACIER?
If so, is there a specific feature we've overlooked?
The text was updated successfully, but these errors were encountered: