summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDwight <dmerriman@gmail.com>2008-04-30 19:32:07 -0400
committerDwight <dmerriman@gmail.com>2008-04-30 19:32:07 -0400
commitdef9b1ba010e14929da493fe55d0bce586023e46 (patch)
treed6d8cc5b1ba589a1c6d7d95ea05bacde8f923a40
parentd67a202c1401bef19321db91b7ccc8bb69ccaf39 (diff)
parent29962eaf8166dfa7271667a8434c3e99017e11a4 (diff)
downloadmongo-def9b1ba010e14929da493fe55d0bce586023e46.tar.gz
Merge branch 'master' of ssh://git.10gen.com/data/gitroot/p
-rw-r--r--db/db.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/db/db.cpp b/db/db.cpp
index cba169ce5be..0ffcfb54d5d 100644
--- a/db/db.cpp
+++ b/db/db.cpp
@@ -583,7 +583,8 @@ void segvhandler(int x) {
}
void mysighandler(int x) {
- // [dm] not working. why?
+ // [dm] not working. why?
+ // [gmj] because the VM catches sig 3 to do a thread dump
cout << "got kill or ctrl c signal " << x << ", terminating" << endl;
problem() << "got kill or ctrl c signal " << x << ", terminating" << endl;
exit(0);
@@ -605,10 +606,25 @@ void initAndListen(int listenPort, const char *dbPath) {
setupSignals();
+ /*
+ * ensure that the dbpath ends w/ '/' as that's key in preventing things like
+ * /data/dbadmin.ns
+ */
+
+ if (dbPath && dbPath[strlen(dbPath)-1] != '/') {
+ char *t = (char *) malloc(strlen(dbPath) + 2);
+
+ strcpy(t, dbPath);
+ strcat(t, "/");
+ dbPath = t;
+ }
+
dbpath = dbPath;
- cout << "10Gen DB : starting : port = " << port << " dbpath = " << dbpath << endl;
- problem() << "10Gen DB : starting : port = " << port << " dbpath = " << dbpath << endl;
+ pid_t pid = getpid();
+
+ cout << "10Gen DB : starting : pid = " << pid << " port = " << port << " dbpath = " << dbpath << endl;
+ problem() << "10Gen DB : starting : pid = " << pid << " port = " << port << " dbpath = " << dbpath << endl;
JavaJS = new JavaJSImpl();
javajstest();
@@ -687,7 +703,7 @@ int main(int argc, char* argv[], char *envp[] )
* *** POST STANDARD SWITCH METHOD - if we don't satisfy, we switch to a
* slightly different mode where "run" is assumed and we can set values
*/
-
+
for (int i = 1; i < argc; i++) {
char *s = argv[i];
@@ -696,10 +712,10 @@ int main(int argc, char* argv[], char *envp[] )
port = atoi(argv[++i]);
}
else if (s && strcmp(s, "--dbpath") == 0) {
- dbpath = argv[++i];
+ dbpath = argv[++i];
}
}
-
+
initAndListen(port, dbpath);
goingAway = true;