-
Notifications
You must be signed in to change notification settings - Fork 141
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
Hidden requirement on multi-1247 parallel transfer against replication resource #6142
Comments
i notice that your first jargon row is not the smallest jargon pid. |
Adjusted statements immediately above the tables to say the first row represents the first stream/agent to open the replica. |
Ooooh, this is good detective work. I wonder if #6109 would be related or help here? |
is this now handled with 4.3.2.5-SNAPSHOT ? |
No. To resolve this issue, we have to claim that the requirement is part of the design or we lift the requirement so that the last stream to close is responsible for updating the catalog and triggering policy. |
The Hidden Requirement
After experimenting and comparing the behavior of the C++, Python, and Jargon parallel transfer implementations, the server appears to have a hidden requirement in regards to closing a replica and updating the catalog via
rx_replica_close()
.That requirement being ... The first stream to open a replica for parallel transfer is also required to be the final stream to close the replica and perform catalog updates.
Testing was performed against a slightly modified 4.2.11 iRODS server.
The following resource hierarchy was used:
The zone does not contain the target data object prior to running the test.
The test creates a brand new data object targeting the
repl
resource.Findings
CREATE
for all streams instead ofOPEN
for overlapping secondary streams.WRITE
instead ofOPEN
for all overlapping secondary streams.dd
, NFSRODS is at the mercy of howdd
decides to write bytes. Jargon attempts to detect overlapping streams to simplify things for the developer, but this presents a problem because overlap may not happen due to how the JVM/OS decides to schedule threads.Additional Information regarding Hierarchy Resolution
The table below shows the values for three agents doing a parallel write of a zero-length file. The first row of each table represents the first stream to open the replica.
C++ Implementation
Jargon Implementation
The text was updated successfully, but these errors were encountered: