Comments (3)
Is this due to davrods using open-write-close? rather than put?
from davrods.
Yes, it appears to be caused by the different API usage by davrods vs iput.
I haven't dived very deep into the underlying implementation of iput, but the rc
function it uses to reach the specific "put" api (rcDataObjPut
, vs Davrods rcDataObjOpen/Write/Close
) appears to assume access to a local file by name. We cannot use this directly in Davrods, as we do not cache uploaded files - we are always dealing with streams.
It may be possible to reuse/change parts of rcDataObjPut to work without local filesystem access, but taking the complexity of the relevant library parts (rcPortalOpr.cpp) into account, I'm not sure that this belongs in Davrods.
A HTTP PUT is in my understanding still very much a "PUT" in iRODS, but as far as I currently understand, the client library no longer (re: oprType/static peps) has an ergonomic way to signal this without letting it perform on local files like icommands.
I'm interested to hear your thoughts on this.
FWIW: There used to be a similar issue with static PEPs not being triggered in pre-release versions of Davrods (irods/irods#3204 ) which was fixed by setting a oprType
flag in the request. We still, currently, specify a "PUT" operation type to iRODS, but this has no apparent effect on dynamic PEPs.
For now, the API PEPs that are currently triggered by file PUTs through Davrods are:
pep_api_data_obj_create (only for new files)
pep_api_data_obj_open (only for existing files)
pep_api_data_obj_write
pep_api_data_obj_close
Corresponding resource PEPs are triggered as well, including pep_resource_modified
at the end of the operation.
from davrods.
Per DICE-UNC/jargon#349 (comment), this is intentional behavior in iRODS and cannot be influenced by clients using open/write/close.
Using the iput-style put
API would trigger the associated PEP, but as described above this is not an option for Davrods.
from davrods.
Related Issues (20)
- iRODS replication fails when putting files via Davrods from the OS X built-in WevDAV client HOT 4
- Allow access via iRODS tickets HOT 5
- davrods_merge_dir_config does not set exposed_root HOT 1
- Compatibility with iRODS 4.2.6 HOT 1
- Regarding use of irods_server_control_plane_key HOT 3
- Timeout with iRODS and Davrods. HOT 3
- Paths in multistatus PROPFIND response document have double slash (//) HOT 4
- Add Content-Location header to requests made using collection URLs missing trailing slash.
- support for user impersonation by service account
- Using mod_cache: unexpected 304 (NOT MODIFIED) on unconditional GET of valid, expired, cached file HOT 1
- Support for mounted tar files
- davrods on iRODS 4.2.9 HOT 2
- DavRODS 4.2.9_1.5.0 .deb HOT 7
- uploading large files via davrods HOT 1
- SegFault when DavrodsExposedRoot is not provided
- SSL_HANDSHAKE_ERROR when trying to connect to irods server HOT 5
- Can Davrods be used with SSO (SAML/OpenID Connect) HOT 1
- Compute checksums on upload? HOT 2
- Does DavRODS support quota requests? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from davrods.