[ https://issues.apache.org/jira/browse/COUCHDB-3274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15832451#comment-15832451 ]
ASF GitHub Bot commented on COUCHDB-3274: ----------------------------------------- GitHub user eiri opened a pull request: https://github.com/apache/couchdb/pull/451 Updated couch dependencies List of changes: * Reset EOF if a partial write was possible ([COUCHDB-3274](https://issues.apache.org/jira/browse/COUCHDB-3274)) * Merge remote branch 'cloudant:validate-count-in-uuids' * Return "Bad Request" when count in /_uuids exceeds max * Validate that count in /_uuids is positive * Merge remote branch 'cloudant:fix-views_tests' * Fix couchdb_views tests ([COUCHDB-3259](https://issues.apache.org/jira/browse/COUCHDB-3259)) * Don't trap exits in couch_file ([COUCHDB-3259](https://issues.apache.org/jira/browse/COUCHDB-3259)) * Merge branch 'COUCHDB-3255-fix-new-revid' ([COUCHDB-3255](https://issues.apache.org/jira/browse/COUCHDB-3255)) * Make revision generation deterministic ([COUCHDB-3255](https://issues.apache.org/jira/browse/COUCHDB-3255)) * Merge remote branch 'cloudant:add-filter-changes-test' * Add tests for filter by filter function * Reduce duplicated code, rename vars consistently * Prevent consumer from hiding error messages You can merge this pull request into a Git repository by running: $ git pull https://github.com/cloudant/couchdb bump-dependencies Alternatively you can review and apply these changes as the patch at: https://github.com/apache/couchdb/pull/451.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #451 ---- commit 1624f84a4ac2c833736317faddb1ed0c41696668 Author: Eric Avdey <e...@eiri.ca> Date: 2017-01-20T21:43:18Z Updated couch dependencies couch: b83f1a..604edd * Reset EOF if a partial write was possible * Merge remote branch 'cloudant:validate-count-in-uuids' * Return "Bad Request" when count in /_uuids exceeds max * Validate that count in /_uuids is positive * Merge remote branch 'cloudant:fix-views_tests' * Fix couchdb_views tests * Don't trap exits in couch_file * Merge branch 'COUCHDB-3255-fix-new-revid' * Make revision generation deterministic * Merge remote branch 'cloudant:add-filter-changes-test' * Add tests for filter by filter function * Reduce duplicated code, rename vars consistently * Prevent consumer from hiding error messages ---- > eof in couch_file can be incorrect after error > ---------------------------------------------- > > Key: COUCHDB-3274 > URL: https://issues.apache.org/jira/browse/COUCHDB-3274 > Project: CouchDB > Issue Type: Bug > Reporter: Robert Newson > > It's possible for a file:write call to write some of the requested data but > then return an error ({error, enospc}, for example). > In 2010 we started tracking eof in couch_file state, where previously we > called file:position(Fd, eof) and used that value, which was always correct. > In success cases we advance the eof value by the correct amount but in error > cases we don't advance it at all. > A simple fix is to call file:position(Fd, eof) in the error cases and set the > eof field to that value. > The upshot of this bug is that data written to the file once eof is wrong is > essentially corrupt in that we'll look for it at the wrong offsets. Given > this would typically when a filesystem runs completely out of space, in most > cases it would not cause issues (we wouldn't be able to write a header that > pointed to this) but if space were then recovered (and the couch_file had not > closed or crashed) then corruption seems assured. > I have a patch for this and I certainly welcome opinions on severity (and, > indeed, if I'm flat wrong). -- This message was sent by Atlassian JIRA (v6.3.4#6332)