[ https://issues.apache.org/jira/browse/OAK-6500?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chetan Mehrotra updated OAK-6500: --------------------------------- Attachment: OAK-6500-approach-a-v1.patch [updated patch|^OAK-6500-approach-a-v1.patch] based on approach a. With this the open file count comes closer to the start count {noformat} Open file count - At start 180 Open file count - Post creation of 100 nodes at /content/a is 297 Open file count - Post async run at /content/a is 300 Open file count - Post creation of 100 nodes at /content/b is 419 Open file count - Post async run at /content/b is 421 Open file count - Post creation of 100 nodes at /content/c is 539 Open file count - Post async run at /content/c is 422 Open file count - Post creation of 1 nodes at /content/d is 423 Open file count - Post async run at /content/d is 301 Open file count - Post creation of 1 nodes at /content/e is 302 Open file count - Post async run at /content/e is 181 Open file count - At end 181 {noformat} Here the NRTIndex keep a memory of opened IndexReader and closes them upon close of NRTIndex. Downside here is that if for a sync lucene index if say 1000 commits happen before AsyncIndexUpdate cycle is triggered then those 1000 reader instances would be held in memory Would now work on #B which would rely on ref counting > NRTIndex leaks file handles due to unclosed IndexReader > ------------------------------------------------------- > > Key: OAK-6500 > URL: https://issues.apache.org/jira/browse/OAK-6500 > Project: Jackrabbit Oak > Issue Type: Bug > Components: lucene > Affects Versions: 1.6.0 > Reporter: Chetan Mehrotra > Assignee: Chetan Mehrotra > Priority: Critical > Fix For: 1.8, 1.7.5, 1.6.4 > > Attachments: OAK-6500-approach-a-v1.patch, OAK-6500-v1.patch > > > On some setups under stress it has been seen that NRTIndex leaks file handles > over time. > Checking with lsof indicates that more than 3 nrt folders per index are being > used. However per design there can be max 3 and after system is not in use > max 1 should be present. > {noformat} > $ lsof -p 9550 | grep '/nrt' | gawk 'match($0, > /.*crx-quickstart\/repository\/index\/(.*?)\/\_.*$/, m) { print m[1]; }' | > sort | uniq > cqPageLucene-1501065263331/nrt1501065335930 > cqPageLucene-1501065263331/nrt1501065374667 > cqPageLucene-1501065263331/nrt1501065392492 > cqPageLucene-1501065263331/nrt1501065440955 > cqPageLucene-1501065263331/nrt1501065473286 > cqPageLucene-1501065263331/nrt1501065507345 > slingeventJob-1501065263330/nrt1501065356975 > slingeventJob-1501065263330/nrt1501065373229 > slingeventJob-1501065263330/nrt1501065394142 > slingeventJob-1501065263330/nrt1501065440953 > slingeventJob-1501065263330/nrt1501065473282 > slingeventJob-1501065263330/nrt1501065507342 > versionStoreIndex-1501065263332/nrt1501065335925 > versionStoreIndex-1501065263332/nrt1501065366781 > versionStoreIndex-1501065263332/nrt1501065392490 > versionStoreIndex-1501065263332/nrt1501065441232 > versionStoreIndex-1501065263332/nrt1501065473285 > {noformat} > Further actually checking index folder indicates that those folder are > actually deleted. So some where the file handle is still referring them. -- This message was sent by Atlassian JIRA (v6.4.14#64029)