Changeset: ab675d79f102 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ab675d79f102 Modified Files: sql/src/backends/monet5/merovingian/ChangeLog.Jun2010 sql/src/backends/monet5/merovingian/merovingian_forkmserver.c Branch: Jun2010 Log Message:
if the mapi_usock path is never going to work due to its length, just fall back to a regular TCP socket for communication (beware of the implicit performance difference based on the chosen prefix!) diffs (45 lines): diff -r 651a689b1500 -r ab675d79f102 sql/src/backends/monet5/merovingian/ChangeLog.Jun2010 --- a/sql/src/backends/monet5/merovingian/ChangeLog.Jun2010 Mon Jul 26 12:41:26 2010 +0200 +++ b/sql/src/backends/monet5/merovingian/ChangeLog.Jun2010 Mon Jul 26 19:53:05 2010 +0200 @@ -1,9 +1,12 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog - 26 Jul 2010; Fabian Groffen <fab...@cwi.nl> merovingian.c, monetdb.c: + 26 Jul 2010; Fabian Groffen <fab...@cwi.nl> merovingian.c, + merovingian_forkmserver.c, monetdb.c: On installs with (very) long prefixes, the UNIX domain sockets could get truncated, causing merovingian to become unavailable to monetdb and mclient. + Similarly, a fall back to a regular TCP socket for mapi connections is + used for forked mservers in this case. 21 Jul 2010; Fabian Groffen <fab...@cwi.nl> merovingian.c: Really shutdown when an argument to merovingian was given, instead of diff -r 651a689b1500 -r ab675d79f102 sql/src/backends/monet5/merovingian/merovingian_forkmserver.c --- a/sql/src/backends/monet5/merovingian/merovingian_forkmserver.c Mon Jul 26 12:41:26 2010 +0200 +++ b/sql/src/backends/monet5/merovingian/merovingian_forkmserver.c Mon Jul 26 19:53:05 2010 +0200 @@ -276,11 +276,21 @@ argv[c++] = dbname; argv[c++] = "--set"; argv[c++] = muri; if (mydoproxy == 1) { + struct sockaddr_un s; /* only for sizeof(s.sun_path) :( */ (void)s; argv[c++] = "--set"; argv[c++] = "mapi_open=false"; /* we "proxy", so we can just solely use UNIX domain sockets - * internally */ - snprintf(port, 24, "mapi_port=0"); - snprintf(usock, 512, "mapi_usock=%s/.mapi.sock", (*stats)->path); + * internally. Before we hit our head, check if we can + * actually use a UNIX socket (due to pathlength) */ + if (strlen((*stats)->path) + 11 < sizeof(s.sun_path)) { + snprintf(port, 24, "mapi_port=0"); + snprintf(usock, 512, "mapi_usock=%s/.mapi.sock", + (*stats)->path); + } else { + argv[c++] = "--set"; argv[c++] = "mapi_autosense=true"; + /* for logic here, see comment below */ + snprintf(port, 24, "mapi_port=%d", _mero_port + 1); + snprintf(usock, 512, "mapi_usock="); + } } else { argv[c++] = "--set"; argv[c++] = "mapi_open=true"; argv[c++] = "--set"; argv[c++] = "mapi_autosense=true"; _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list