On 1/11/2009 1:55 AM, Juhani Ränkimies wrote:
I searched windows related issues from jira and I'm worried about two of them:
https://issues.apache.org/jira/browse/COUCHDB-86 ( compaction doesn't work )
https://issues.apache.org/jira/browse/COUCHDB-222 ( fsync problem )
The compaction issue resolution is "Don't Fix", and it refers to
discussion on issue 67 (unicode chars in db names) for a solution. I
need the compaction from the start and I got it to work with the
attached dirty fix. That'll do for now, but I'd like to understand how
67 will solve the problem.
This is all fairly vague, but IIUC the general idea was that issue 67
would provide a level of indirection between the DB name and the actual
file name, primarily to support database names which are invalid
file-system names. Then this general support could possibly be
leveraged so that whenever a database needs to be rolled over, instead
of trying to replace it directly on the file-system (which fails on
Windows), we just update the "pointer" to use a new name, serving all
new requests from that db and deleting the old database once everything
has caught up and released the old DB.
Also, my mailer isn't showing the "dirty fix" attachment - could you
please resend it (either to me personally or via the list)?
The fsync issue worries me because I don't exactly undestand it's
implications. It'd be great if someone would elaborate.
I'm not 100% sure, but I *think* the issue was that file:sync() on
erlang under windows used to be a noop - eg, see:
http://www.erlang.org/pipermail/erlang-questions/2007-March/025485.html
But following the lead from that post, I see in R13B01 the source for
that impl is now:
efile_fsync(errInfo, fd)
Efile_error* errInfo; /* Where to return error codes. */
int fd; /* File descriptor for file to sync. */
{
if (!FlushFileBuffers((HANDLE) fd)) {
return check_error(-1, errInfo);
...
Which looks to me like it is no longer of concern.
Cheers,
Mark