Changeset: b18bf65990ad for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b18bf65990ad
Modified Files:
        gdk/gdk_bbp.c
        gdk/gdk_bbp.h
        tools/embedded/monetdb_embedded.c
        tools/merovingian/daemon/controlrunner.c
        tools/monetdbe/monetdbe.c
        tools/mserver/mserver5.c
        tools/mserver/shutdowntest.c
Branch: default
Log Message:

do not try to output errors during initialisation (even before GDKinit) in 
embedded mode


diffs (170 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1110,7 +1110,7 @@ GDKinmemory(void)
 
 /* all errors are fatal */
 gdk_return
-BBPaddfarm(const char *dirname, int rolemask)
+BBPaddfarm(const char *dirname, int rolemask, int logerror)
 {
        struct stat st;
        int i;
@@ -1123,21 +1123,25 @@ BBPaddfarm(const char *dirname, int role
                return GDK_SUCCEED;
        }
        if (strchr(dirname, '\n') != NULL) {
-               GDKerror("no newline allowed in directory name\n");
+               if (logerror)
+                       GDKerror("no newline allowed in directory name\n");
                return GDK_FAIL;
        }
        if (rolemask == 0 || (rolemask & 1 && BBPfarms[0].dirname != NULL)) {
-               GDKerror("bad rolemask\n");
+               if (logerror)
+                       GDKerror("bad rolemask\n");
                return GDK_FAIL;
        }
        if (mkdir(dirname, MONETDB_DIRMODE) < 0) {
                if (errno == EEXIST) {
                        if (stat(dirname, &st) == -1 || !S_ISDIR(st.st_mode)) {
-                               GDKerror("%s: not a directory\n", dirname);
+                               if (logerror)
+                                       GDKerror("%s: not a directory\n", 
dirname);
                                return GDK_FAIL;
                        }
                } else {
-                       GDKsyserror("%s: cannot create directory\n", dirname);
+                       if (logerror)
+                               GDKsyserror("%s: cannot create directory\n", 
dirname);
                        return GDK_FAIL;
                }
        }
@@ -1165,7 +1169,8 @@ BBPaddfarm(const char *dirname, int role
                                }
                                if (stat(bbpdir, &st) != -1 || errno != ENOENT) 
{
                                        GDKfree(bbpdir);
-                                       GDKerror("%s is a database\n", dirname);
+                                       if (logerror)
+                                               GDKerror("%s is a database\n", 
dirname);
                                        return GDK_FAIL;
                                }
                                GDKfree(bbpdir);
@@ -1175,7 +1180,8 @@ BBPaddfarm(const char *dirname, int role
                                }
                                if (stat(bbpdir, &st) != -1 || errno != ENOENT) 
{
                                        GDKfree(bbpdir);
-                                       GDKerror("%s is a database\n", dirname);
+                                       if (logerror)
+                                               GDKerror("%s is a database\n", 
dirname);
                                        return GDK_FAIL;
                                }
                                GDKfree(bbpdir);
@@ -1183,7 +1189,8 @@ BBPaddfarm(const char *dirname, int role
                        return GDK_SUCCEED;
                }
        }
-       GDKerror("too many farms\n");
+       if (logerror)
+               GDKerror("too many farms\n");
        return GDK_FAIL;
 }
 
diff --git a/gdk/gdk_bbp.h b/gdk/gdk_bbp.h
--- a/gdk/gdk_bbp.h
+++ b/gdk/gdk_bbp.h
@@ -56,7 +56,7 @@
 gdk_export bat getBBPsize(void); /* current occupied size of BBP array */
 
 /* global calls */
-gdk_export gdk_return BBPaddfarm(const char *dirname, int rolemask);
+gdk_export gdk_return BBPaddfarm(const char *dirname, int rolemask, int 
logerror);
 
 /* update interface */
 gdk_export void BBPclear(bat bid);
diff --git a/tools/embedded/monetdb_embedded.c 
b/tools/embedded/monetdb_embedded.c
--- a/tools/embedded/monetdb_embedded.c
+++ b/tools/embedded/monetdb_embedded.c
@@ -459,14 +459,14 @@ monetdb_startup(char* dbdir)
                goto cleanup;
        }
        if (!dbdir) { /* in-memory */
-               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT)) != 
GDK_SUCCEED) {
+               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT), 0) 
!= GDK_SUCCEED) {
                        mo_free_options(set, setlen);
                        msg = createException(MAL, "embedded.monetdb_startup", 
"Cannot add in-memory farm");
                        goto cleanup;
                }
        } else {
-               if (BBPaddfarm(dbdir, 1 << PERSISTENT) != GDK_SUCCEED ||
-                       BBPaddfarm(/*dbextra ? dbextra : */dbdir, 1 << 
TRANSIENT) != GDK_SUCCEED) {
+               if (BBPaddfarm(dbdir, 1 << PERSISTENT, 0) != GDK_SUCCEED ||
+                       BBPaddfarm(/*dbextra ? dbextra : */dbdir, 1 << 
TRANSIENT, 0) != GDK_SUCCEED) {
                        mo_free_options(set, setlen);
                        msg = createException(MAL, "embedded.monetdb_startup", 
"Cannot add farm %s", dbdir);
                        goto cleanup;
diff --git a/tools/merovingian/daemon/controlrunner.c 
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -447,7 +447,7 @@ static void ctl_handle_client(
                                                        free(sadbfarm);
                                                        setlen = 
mo_add_option(&set, setlen, opt_cmdline, "gdk_dbpath", buf2);
                                                        setlen = 
mo_system_config(&set, setlen);
-                                                       if (BBPaddfarm(buf2, (1 
<< PERSISTENT) | (1 << TRANSIENT)) != GDK_SUCCEED) {
+                                                       if (BBPaddfarm(buf2, (1 
<< PERSISTENT) | (1 << TRANSIENT), 1) != GDK_SUCCEED) {
                                                                
Mfprintf(_mero_ctlerr, "%s: could not add farm to "
                                                                        "'%s': 
%d: %s\n", origin, q, errno, strerror(errno));
                                                                exit(0);
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -460,14 +460,14 @@ monetdbe_startup(char* dbdir, monetdbe_o
        }
 
        if (!dbdir) { /* in-memory */
-               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT)) != 
GDK_SUCCEED) {
+               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT), 0) 
!= GDK_SUCCEED) {
                        mo_free_options(set, setlen);
                        msg = createException(MAL, "monetdbe.monetdbe_startup", 
"Cannot add in-memory farm");
                        goto cleanup;
                }
        } else {
-               if (BBPaddfarm(dbdir, 1 << PERSISTENT) != GDK_SUCCEED ||
-                       BBPaddfarm(/*dbextra ? dbextra : */dbdir, 1 << 
TRANSIENT) != GDK_SUCCEED) {
+               if (BBPaddfarm(dbdir, 1 << PERSISTENT, 0) != GDK_SUCCEED ||
+                       BBPaddfarm(/*dbextra ? dbextra : */dbdir, 1 << 
TRANSIENT, 0) != GDK_SUCCEED) {
                        mo_free_options(set, setlen);
                        msg = createException(MAL, "monetdbe.monetdbe_startup", 
"Cannot add farm %s", dbdir);
                        goto cleanup;
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -497,13 +497,13 @@ main(int argc, char **av)
                }
        }
        if (inmemory) {
-               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT)) != 
GDK_SUCCEED) {
+               if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT), 1) 
!= GDK_SUCCEED) {
                        fprintf(stderr, "!ERROR: cannot add in-memory farm\n");
                        exit(1);
                }
        } else {
-               if (BBPaddfarm(dbpath, 1 << PERSISTENT) != GDK_SUCCEED ||
-                   BBPaddfarm(dbextra ? dbextra : dbpath, 1 << TRANSIENT) != 
GDK_SUCCEED) {
+               if (BBPaddfarm(dbpath, 1 << PERSISTENT, 1) != GDK_SUCCEED ||
+                   BBPaddfarm(dbextra ? dbextra : dbpath, 1 << TRANSIENT, 1) 
!= GDK_SUCCEED) {
                        fprintf(stderr, "!ERROR: cannot add farm\n");
                        exit(1);
                }
diff --git a/tools/mserver/shutdowntest.c b/tools/mserver/shutdowntest.c
--- a/tools/mserver/shutdowntest.c
+++ b/tools/mserver/shutdowntest.c
@@ -127,7 +127,7 @@ static str monetdb_initialize(void) {
        setlen = mo_builtin_settings(&set);
        setlen = mo_add_option(&set, setlen, opt_cmdline, "gdk_dbpath", dbdir);
 
-       if (BBPaddfarm(dbdir, (1 << PERSISTENT) | (1 << TRANSIENT)) != 
GDK_SUCCEED) {
+       if (BBPaddfarm(dbdir, (1 << PERSISTENT) | (1 << TRANSIENT), 0) != 
GDK_SUCCEED) {
                retval = GDKstrdup("BBPaddfarm failed");
                goto cleanup;
        }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to