Thursday, June 17, 2004

MyWeb and Apache2

It seems that the libraries under mod_edir aren't quite there yet when it gets to clusters. I've been speaking with one of the developers of mod_edir and he had a clear opinion on what the problem was. Since Mod_edir is on Novell Forge as an open-source thing, I downloaded the code. It is rather short code for what it does, which meant I could actually follow it. The bits I'm having trouble with is this function call:
err = NXCreatePathContext(0, spath_root, 0, (void *)rdirs_server_identity, &pathCtx);

if (err) {
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
"could not create path context. error: %d", err);
return HTTP_NOT_FOUND;
}
When it runs into the problem it gives me this error-code in the debug-log:

could not create path context. error: -1

Okie dokie, so the error is returned by NXCreatePathContext. The Novell NDK documentation here does NOT list what an error-code of "-1" is. The developer has run into this more than I have, and he said:

George Raetzke:
Running mod_edir on a cluster is somewhat screwed.
This isn't mod_edir fault, but a defect in libc. (it uses winsock, and if
winsock give a "hold on a sec" response, rather then an immediate success,
it gives up) This "hold on a sec" is actually caused by an overlapping
i/o. I have discovered this can be reduced by (no you probably aren't
going to like it), adding a replica of the partition that contains the
server objects (not sure if the server object that make a difference is
the web server's, or the remote server object, as my test setup those were
in the same partition). I have a defect entered in on this, but no fix
yet. And yes I spent a lot of time on this one.
So, in short, we can't do that yet. I certainly hope the underlying libraries get fixed before August. For it is August when we'll have the downtime window available to upgrade the cluster to NW6.5. There are other ways to pull of MyWeb, but none of then are what you call... clean. Mod_userdir is the only other module out there capable of doing http://server/~useracct/ but it is limited in that it can only serve from the local server. That can be worked around, but it'll be a customized hack.

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?