-
-
Notifications
You must be signed in to change notification settings - Fork 316
Update support for iRODS #17341
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
base: master
Are you sure you want to change the base?
Update support for iRODS #17341
Conversation
# iRODS configuration | ||
# ------------------- | ||
irods.client_negotiation_policy=CS_NEG_REFUSE | ||
# Local files exceeding the following size will trigger use of parallel transfer. | ||
# Normally defaults to 32MB in iRODS clients. | ||
irods.parallel_transfer.size_threshold=33554432 | ||
# The number of threads used for parallel transfer. | ||
irods.parallel_transfer.thread_count=3 | ||
# The size of the buffer used for reading during parallel transfer. | ||
irods.parallel_transfer.rbuffer_size=4194304 | ||
# The size of the buffer used for writing during parallel transfer. | ||
irods.parallel_transfer.wbuffer_size=4194304 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might drop these changes if there's a more appropriate location.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this file.
// TODO If we're dealing with a collection, should existing data objects sharing | ||
// the same name be overwritten? This should probably be a configurable option. | ||
IRODSFilesystem.copy(conn.getRcComm(), from, to, IRODSFilesystem.CopyOptions.RECURSIVE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle TODO
// TODO Shouldn't these be updated after the operation? | ||
deleted.add(file); | ||
callback.delete(file); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle TODO
// TODO Clamp the value so that users do not specify something ridiculous. | ||
final int threadCount = 3; //preferences.getInteger("irods.parallel_transfer.thread_count"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle TODO
// TODO Make this configurable. | ||
executor.awaitTermination(5, TimeUnit.SECONDS); | ||
|
||
// TODO Make this configurable. | ||
final String fingerprintValue = IRODSFilesystem.dataObjectChecksum(primaryConn, logicalPath); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle TODO
// assertTrue(new IRODSExceptionMappingService().map(new CatNoAccessException("no access")) instanceof AccessDeniedException); | ||
// assertTrue(new IRODSExceptionMappingService().map(new FileNotFoundException("no file")) instanceof NotfoundException); | ||
// assertTrue(new IRODSExceptionMappingService().map(new AuthenticationException("no user")) instanceof LoginFailureException); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Restore once mapper is updated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this file.
|
|
||
# iRODS configuration | ||
# ------------------- | ||
irods.client_negotiation_policy=CS_NEG_REFUSE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expose iRODS options for secure communication and various other options.
@dkocher Can you provide the Entity CLA? |
Discussed in #14449 (comment) |
This PR updates support for iRODS by replacing Jargon (legacy iRODS library) with irods4j.
The foundational work was implemented by @MINGYJ, a recent iRODS intern. My commits are mainly polish and corrections around the use of the irods4j library.
Basic functionality is working - i.e. single stream uploads/downloads, renames, editing, etc.
The parallel transfer implementation doesn't appear to be working as intended. This is likely due to not having a full understanding of how the Cyberduck components fit together - i.e. Read/WriteFeature vs Upload/DownloadFeature.
Here are the steps for performing parallel transfer (i.e. multipart uploads) in iRODS.
Putting in draft for now. Feedback and guidance on how to implement proper support for parallel transfer would be greatly appreciated.
Resolves #14449.