-
Notifications
You must be signed in to change notification settings - Fork 9
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
[#110][#111] List operation handles large collections #114
Conversation
seems good - ready to # if we're tested/confirmed. what changed in the force push? |
Working on and running test right now. The force push involved a change to the pom.xml file. I needed to revert part of the file so that the build succeeds. |
got it - thanks. |
I've added a BATS test that verifies that the list operation produces the correct number of entries for a large collection (in this case 3000 files). The test passed. We'll have to look into whether this PR resolves #110. We may need to use apache httpd to simulate that issue. |
great - yes, let's see if sanger may want to test this branch themselves, too. if you're not seeing hitches in the listings anymore, i'm fine to get it #'d and merged. can always leave the issue open until they confirm as fixed. |
Sounds great, let me know how it's going. I'm interested to see how the
removed ObjStat will improve listing. There remain some interior changes to
the list all method I can do under the covers too, mostly in how it's
paging. We can talk about that as a separate issue once we get the listings
working properly.
|
This sounds exiting! However I shall defer to my esteemed colleague @ac55-sanger who is leading the charge here.... |
Sure, sounds good, happy to test. |
Hi, docker build is failing on korydraughn:110 with sleepycat dependency issue:
I tried to add it in pom.xml and re-build but didn't work. |
Will look into this. |
7e4b080
to
689d36e
Compare
@ac55-sanger Mike and I have resolved the build issue. Please give this another shot when you get a chance. |
Sure, thanks. |
@korydraughn
dependency issue. Steps followed: Let me know if I'm doing something wrong here. |
Your docker build command is actually trying to build the master branch. You need to point that command at this branch. To do that, run the following: $ docker build -t nfsrods --build-arg='_github_account=korydraughn' --build-arg='_sha=110' |
Ah, my bad. Thanks, it built successfully. |
@korydraughn
whereas all these files exist on irods and I can list these using "ils" command.
NFSRODs mounted directory 1) doesn't list the data properly 2) lists some random data (eg. "cram" directory in this case) which doesn't exist in irods. This mapping issue is not seen in the previous release build (tested it again). Thanks |
Kory let's get together on this.
…On Wed, Feb 3, 2021, 7:49 AM Ashwini Chhipa ***@***.***> wrote:
@korydraughn <https://github.com/korydraughn>
I tested this build and here is my report:
1. "ls" on the directory containing 65K+ files took more than 24 hours
and yet resulted in wrong data and count.
$ ls -l | wc -l
..
ls: cannot access 'DDD_MAIN5249029.cram': No such file or directory
ls: cannot access 'DDD_MAIN5249029.cram.crai': No such file or directory
ls: cannot access 'DDD_MAIN5249030.cram': No such file or directory
ls: cannot access 'DDD_MAIN5249030.cram.crai': No such file or directory
1631
whereas all these files exist on irods and I can list these using "ils"
command.
1. This build also broke data mapping and random data is being mapped
to a collection.
$ ls -l <mounted_path>/20140918/
ls: cannot access '<mounted_path>/20140918/cram': No such file or directory
total 0
d????????? ? ? ? ? ? cram
$ ls -l <mounted_path>/20140918/ | wc -l
ls: cannot access '/mnt/humgen/projects/ddd/20140918/cram': No such file or directory
2
=====
$ ils <irods_path>/20140918/
<irods_path>/20140918:
10:1-135534747.vcf.gz
10:1-135534747.vcf.gz.tbi
11:1-135006516.vcf.gz
11:1-135006516.vcf.gz.tbi
..
.
..
$ ils <irods_path>/20140918/ | wc -l
49
NFSRODs mounted directory 1) doesn't list the data properly 2) lists some
random data (eg. "cram" directory in this case) which doesn't exist in
irods.
This mapping issue is not seen in the previous release build (tested it
again).
Thanks
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#114 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAIL4LNR4CNV7VXYKGLASMTS5FA6TANCNFSM4WNWGL2A>
.
|
We'll continue to look into this. |
@ac55-sanger When you did your testing, did you make sure to unmount nfsrods before remounting it? I know that weird things happen when the nfsrods server is bounced without remounting it. |
fwiw Kory, Deep and I are setting up a test platform with 65K+ for our own
testing and for profiling/optimizatoin
…On Fri, Feb 5, 2021 at 3:10 PM Kory Draughn ***@***.***> wrote:
@ac55-sanger <https://github.com/ac55-sanger> When you did your testing,
did you make sure to unmount nfsrods before remounting it?
I know that weird things happen when the nfsrods server is bounced without
remounting it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#114 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAIL4LIWP73K462K4TMNOBTS5RGBVANCNFSM4WNWGL2A>
.
|
Yes @korydraughn I remember unmounting the old one before mounting a server with the new build. |
83b4807
to
2928653
Compare
That is surprising. Can you verify that the SHA for your build matches the one for this PR? |
Sure,
|
It just gave up after ~38 hours. :(
|
We narrowed the scope of @ac55-sanger's slow listings to an iRODS specific query that is not valid syntax for Oracle. We are moving ahead with the rest of these edits and will tackle the Oracle syntax issue separately. |
@michael-conway Can you make a new snapshot of jargon (tip of master) available? |
@ac55-sanger Please try using NFSRODS again. You'll need to rebuild the docker image. You'll need to make some changes before running NFSRODS.
Below are the new specific queries. Please have Simon take a look at these. You're free to adjust these. ilsLACollectionsSELECT * FROM (
SELECT c.parent_coll_name, c.coll_name, c.create_ts, c.modify_ts,
c.coll_id, c.coll_owner_name, c.coll_owner_zone, c.coll_type, u.user_name, u.zone_name,
a.access_type_id, u.user_id, rownum as limit_rn
FROM R_COLL_MAIN c
JOIN R_OBJT_ACCESS a ON c.coll_id = a.object_id
JOIN R_USER_MAIN u ON a.user_id = u.user_id
WHERE c.parent_coll_name = ?
ORDER BY c.coll_name, u.user_name, a.access_type_id, c.parent_coll_name, c.create_ts, c.modify_ts,
c.coll_id, c.coll_owner_name, c.coll_owner_zone, c.coll_type, u.zone_name, u.user_id DESC
) WHERE limit_rn > ? AND limit_rn <= ? ilsLADataObjectsSELECT * FROM (
SELECT s.coll_name, s.data_name, s.create_ts, s.modify_ts, s.data_id,
s.data_size, s.data_repl_num, s.data_owner_name, s.data_owner_zone, u.user_name,
u.user_id, a.access_type_id, u.user_type_name, u.zone_name, rownum as limit_rn
FROM (
SELECT c.coll_name, d.data_name, d.create_ts, d.modify_ts, d.data_id, d.data_repl_num,
d.data_size, d.data_owner_name, d.data_owner_zone
FROM R_COLL_MAIN c
JOIN R_DATA_MAIN d ON c.coll_id = d.coll_id
WHERE c.coll_name = ?
) s
JOIN R_OBJT_ACCESS a ON s.data_id = a.object_id
JOIN R_USER_MAIN u ON a.user_id = u.user_id
ORDER BY s.coll_name, s.data_name, u.user_name, a.access_type_id, s.create_ts, s.modify_ts,
s.data_id, s.data_size, s.data_repl_num, s.data_owner_name, s.data_owner_zone,
u.user_id, u.user_type_name, u.zone_name DESC
) WHERE limit_rn > ? and limit_rn <= ? |
@ac55-sanger Please hold on replacing the existing specific queries. |
Sure. Thankfully I haven't looked into these yet. |
@ac55-sanger How long does it take I'm trying to determine if anything breaks by changing those queries. I feel anything attempting to invoke the existing ones will result in the poor performance we see in NFSRODS. |
Here is the time taken to list a directory having 65K files using ils command -
|
@ac55-sanger You can proceed with replacing those specific queries. They were added to improve Jargon's performance around large data sets. |
Sure.
? |
Don't use the ones from irods-legacy. Use the replacements mentioned here: #114 (comment) |
Sure, thanks. |
8f2c58e
to
5304ba5
Compare
- iRODS permissions are now cached - iRODS user type information is now cached - Fixed list operation result truncation - Replaced parallelStream() w/ stream() - Use counter instead of inode number as cookie for directory entries - Server caches query results for list operation - List operation jumps over previously handled entries instead of looping/skipping them - Experimenting with connection cache - Exposed cache eviction time options - Added new configuration option: using_oracle_database - Bumped Jargon version for Oracle support - Updated the README.
This needs to be tested.