Update of /cvsroot/monetdb/sql/src/backends/monet5/merovingian
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv4046
Modified Files:
merovingian_controlrunner.c monetdb_lock.c monetdb_release.c
Log Message:
implemented merovingian-side lock and release commands
U monetdb_lock.c
Index: monetdb_lock.c
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/merovingian/monetdb_lock.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- monetdb_lock.c 10 Sep 2009 08:04:00 -0000 1.2
+++ monetdb_lock.c 10 Sep 2009 08:47:15 -0000 1.3
@@ -32,16 +32,31 @@
/* do for each listed database */
for (i = 1; i < argc; i++) {
- char *e;
+ hadwork = 1;
+ if (mero_running == 0) {
+ char *e;
- if ((e = db_lock(argv[i])) != NULL) {
- fprintf(stderr, "lock: %s\n", e);
- free(e);
- state |= 1;
+ if ((e = db_lock(argv[i])) != NULL) {
+ fprintf(stderr, "%s: %s\n", argv[0], e);
+ free(e);
+ state |= 1;
+ continue;
+ }
} else {
- printf("database '%s' is now under maintenance\n",
argv[i]);
+ char *res;
+ char *out;
+
+ out = control_send(&res, mero_control, -1, argv[i],
argv[0]);
+ if (out != NULL || strcmp(res, "OK") != 0) {
+ res = out == NULL ? res : out;
+ fprintf(stderr, "%s: %s\n", argv[0], res);
+ state |= 1;
+ free(res);
+ continue;
+ }
+ free(res);
}
- hadwork = 1;
+ printf("database '%s' is now under maintenance\n", argv[i]);
}
if (hadwork == 0) {
U monetdb_release.c
Index: monetdb_release.c
===================================================================
RCS file:
/cvsroot/monetdb/sql/src/backends/monet5/merovingian/monetdb_release.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- monetdb_release.c 10 Sep 2009 08:20:33 -0000 1.2
+++ monetdb_release.c 10 Sep 2009 08:47:15 -0000 1.3
@@ -32,17 +32,32 @@
/* do for each listed database */
for (i = 1; i < argc; i++) {
- char *e;
+ hadwork = 1;
+ if (mero_running == 0) {
+ char *e;
- if ((e = db_release(argv[i])) != NULL) {
- fprintf(stderr, "release: %s\n", e);
- free(e);
- state |= 1;
+ if ((e = db_release(argv[i])) != NULL) {
+ fprintf(stderr, "%s: %s\n", argv[0], e);
+ free(e);
+ state |= 1;
+ continue;
+ }
} else {
- printf("database '%s' has been taken out of maintenance
mode\n",
- argv[i]);
+ char *res;
+ char *out;
+
+ out = control_send(&res, mero_control, -1, argv[i],
argv[0]);
+ if (out != NULL || strcmp(res, "OK") != 0) {
+ res = out == NULL ? res : out;
+ fprintf(stderr, "%s: %s\n", argv[0], res);
+ state |= 1;
+ free(res);
+ continue;
+ }
+ free(res);
}
- hadwork = 1;
+ printf("database '%s' has been taken out of maintenance mode\n",
+ argv[i]);
}
if (hadwork == 0) {
U merovingian_controlrunner.c
Index: merovingian_controlrunner.c
===================================================================
RCS file:
/cvsroot/monetdb/sql/src/backends/monet5/merovingian/merovingian_controlrunner.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- merovingian_controlrunner.c 9 Sep 2009 20:12:19 -0000 1.12
+++ merovingian_controlrunner.c 10 Sep 2009 08:47:15 -0000 1.13
@@ -240,6 +240,54 @@
len = snprintf(buf2,
sizeof(buf2), "OK\n");
send(msgsock, buf2, len, 0);
}
+ } else if (strcmp(p, "lock") == 0) {
+ char *e = db_lock(q);
+ if (e != NULL) {
+ Mfprintf(_mero_ctlerr, "failed
to lock "
+ "database '%s':
%s\n", q, getErrMsg(e));
+ len = snprintf(buf2,
sizeof(buf2),
+ "%s\n",
getErrMsg(e));
+ send(msgsock, buf2, len, 0);
+ free(e);
+ } else {
+ /* we go under maintenance,
unshare it, take
+ * spam if database happened to
be unshared "for
+ * love" */
+ leavedb(q);
+ Mfprintf(_mero_ctlout, "locked
database '%s'\n", q);
+ len = snprintf(buf2,
sizeof(buf2), "OK\n");
+ send(msgsock, buf2, len, 0);
+ }
+ } else if (strcmp(p, "release") == 0) {
+ char *e = db_release(q);
+ if (e != NULL) {
+ Mfprintf(_mero_ctlerr, "failed
to release "
+ "database '%s':
%s\n", q, getErrMsg(e));
+ len = snprintf(buf2,
sizeof(buf2),
+ "%s\n",
getErrMsg(e));
+ send(msgsock, buf2, len, 0);
+ free(e);
+ } else {
+ /* announce database, but need
to do it the
+ * right way so we don't
accidentially announce
+ * an unshared database */
+ if ((e =
SABAOTHgetStatus(&stats, q)) != MAL_SUCCEED) {
+ len = snprintf(buf2,
sizeof(buf2),
+
"internal error, please review the logs\n");
+ send(msgsock, buf2,
len, 0);
+ Mfprintf(_mero_ctlerr,
"release: SABAOTHgetStatus: "
+ "%s\n",
e);
+ freeErr(e);
+ /* we need to OK
regardless, as releasing
+ * succeed */
+ } else {
+ anncdbS(stats);
+
SABAOTHfreeStatus(&stats);
+ }
+ Mfprintf(_mero_ctlout,
"released database '%s'\n", q);
+ len = snprintf(buf2,
sizeof(buf2), "OK\n");
+ send(msgsock, buf2, len, 0);
+ }
} else if (strncmp(p, "share=",
strlen("share=")) == 0) {
sabdb *stats;
err e;
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins