couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hammond <skippy.hamm...@gmail.com>
Subject Re: Anyone using couchdb on windows for real?? I'm considering.
Date Mon, 02 Nov 2009 01:14:08 GMT
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

Mime
View raw message