You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by GitBox <gi...@apache.org> on 2017/11/21 12:24:52 UTC

[GitHub] ondra-novak commented on issue #1010: Compaction of a heavily updated view - file descriptor leak (known as ".deleted" issue)

ondra-novak commented on issue #1010: Compaction of a heavily updated view - file descriptor leak (known as ".deleted" issue)
URL: https://github.com/apache/couchdb/issues/1010#issuecomment-346011166
 
 
   UPDATE: Steps to reproduce
   
   1. Create blank database ("testleak" in my example)
   2. Create simple view ("_design/test/_view/test" in my example)
   
   in first terminal
   
   3. Create some dummy documents
   ```$ curl -H "Content-Type:application/json" --data-binary "{}" http://localhost:5984/testleak```
   4. Update view and ask for changes using the the same connection
   ```$ curl http://localhost:5984/testleak/_design/test/_view/test "http://localhost:5984/testleak/_changes?since=now&heartbeat=true&feed=continuous"```
   
   In other terminal
   
   5. become root
   6. pidof beam.smp (2200 in my case)
   7. cd /proc/2200/fd
   8. ls -la | grep -iE "(delete|mrview)"
   
   you will see just only opened mrviews
   
   ```lrwx------ 1 couchdb couchdb 64 lis 21 12:49 28 -> /var/lib/couchdb/.testleak_design/mrview/62e2ed5df6a6694c0438c7724137ca0c.view```
   
   9. compact the view _design/test
   
   10. repeat step 8
   ```
   lrwx------ 1 couchdb couchdb 64 lis 21 12:49 28 -> /var/lib/couchdb/.testleak_design/mrview/62e2ed5df6a6694c0438c7724137ca0c.view
   lrwx------ 1 couchdb couchdb 64 lis 21 12:48 55 -> /var/lib/couchdb/.delete/bd46813bf2ecea0dad0c41dbbc89cb83 (deleted)
   ```
   
   The deleted file stays there until the connection is closed (press control-c in the first terminal). If you want to see multiple deleted files, you will need to create script, which uses single connection to repeatedly update the view. Each compaction generates new deleted file. These files are persists, until  the connection is disconnected. 
   
   Sometimes it could be very difficult to disconnect some connections, for example if the connection is used to receive changes.
   
   Version 1.7.1

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services