Changeset: 51b8feaaa314 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/51b8feaaa314
Modified Files:
gdk/gdk_logger.c
Branch: default
Log Message:
Set access mode for persistent logger bats as soon as possible.
diffs (92 lines):
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -206,8 +206,10 @@ logbat_new(int tt, BUN size, role_t role
if (nb) {
BBP_pid(nb->batCacheid) = 0;
- if (role == PERSISTENT)
+ if (role == PERSISTENT) {
BATmode(nb, false);
+ nb = BATsetaccess(nb, BAT_READ);
+ }
} else {
TRC_CRITICAL(GDK, "creating new BAT[%s]#" BUNFMT " failed\n",
ATOMname(tt), size);
}
@@ -1661,14 +1663,14 @@ cleanup_and_swap(logger *lg, int *r, con
if (lid == -1)
continue; /* remove */
- if (BUNappend(nbids, &col, false) != GDK_SUCCEED ||
- BUNappend(noids, &nid, false) != GDK_SUCCEED ||
+ if (BUNappend(nbids, &col, true) != GDK_SUCCEED ||
+ BUNappend(noids, &nid, true) != GDK_SUCCEED ||
BUNappend(nlids, &lid, false) != GDK_SUCCEED ||
BUNappend(ncnts, &cnt, false) != GDK_SUCCEED)
err = 1;
if (BUNfnd(lg->dcatalog, &pos) != BUN_NONE) {
pos = (oid) (BATcount(nbids) - 1);
- if (BUNappend(ndels, &pos, false) != GDK_SUCCEED)
+ if (BUNappend(ndels, &pos, true) != GDK_SUCCEED)
err = 1;
}
}
@@ -1684,10 +1686,7 @@ cleanup_and_swap(logger *lg, int *r, con
/* point of no return */
if (log_switch_bat(catalog_bid, nbids, lg->fn, "catalog_bid") !=
GDK_SUCCEED ||
log_switch_bat(catalog_id, noids, lg->fn, "catalog_id") !=
GDK_SUCCEED ||
- log_switch_bat(dcatalog, ndels, lg->fn, "dcatalog") != GDK_SUCCEED
||
- (nbids = BATsetaccess(nbids, BAT_READ)) == NULL ||
- (noids = BATsetaccess(noids, BAT_READ)) == NULL ||
- (ndels = BATsetaccess(ndels, BAT_READ)) == NULL) {
+ log_switch_bat(dcatalog, ndels, lg->fn, "dcatalog") != GDK_SUCCEED)
{
logbat_destroy(nbids);
logbat_destroy(noids);
logbat_destroy(ndels);
@@ -1869,9 +1868,7 @@ bm_subcommit(logger *lg, logged_range *p
BATclear(lg->dseqs, true);
if (log_switch_bat(lg->seqs_id, ids, lg->fn, "seqs_id") !=
GDK_SUCCEED ||
- log_switch_bat(lg->seqs_val, vals, lg->fn, "seqs_val") !=
GDK_SUCCEED ||
- (ids = BATsetaccess(ids, BAT_READ)) == NULL ||
- (vals = BATsetaccess(vals, BAT_READ)) == NULL) {
+ log_switch_bat(lg->seqs_val, vals, lg->fn, "seqs_val") !=
GDK_SUCCEED) {
logbat_destroy(ids);
logbat_destroy(vals);
GDKfree(n);
@@ -2056,11 +2053,6 @@ log_load(const char *fn, const char *log
GDKerror("cannot create catalog bats");
goto error;
}
- if ((lg->catalog_bid = BATsetaccess(lg->catalog_bid, BAT_READ))
== NULL ||
- (lg->catalog_id = BATsetaccess(lg->catalog_id, BAT_READ))
== NULL ||
- (lg->dcatalog = BATsetaccess(lg->dcatalog, BAT_READ)) ==
NULL) {
- goto error;
- }
TRC_INFO(WAL, "create %s catalog\n", fn);
/* give the catalog bats names so we can find them
@@ -2211,6 +2203,11 @@ log_load(const char *fn, const char *log
GDKerror("Logger_new: cannot load seqs bats");
goto error;
}
+ if ((lg->seqs_val = BATsetaccess(lg->seqs_val, BAT_READ)) ==
NULL ||
+ (lg->seqs_id = BATsetaccess(lg->seqs_id, BAT_READ)) == NULL
||
+ (lg->dseqs = BATsetaccess(lg->dseqs, BAT_READ)) == NULL) {
+ goto error;
+ }
} else {
lg->seqs_id = logbat_new(TYPE_int, 1, PERSISTENT);
lg->seqs_val = logbat_new(TYPE_lng, 1, PERSISTENT);
@@ -2238,11 +2235,6 @@ log_load(const char *fn, const char *log
}
needcommit = true;
}
- if ((lg->seqs_val = BATsetaccess(lg->seqs_val, BAT_READ)) == NULL ||
- (lg->seqs_id = BATsetaccess(lg->seqs_id, BAT_READ)) == NULL ||
- (lg->dseqs = BATsetaccess(lg->dseqs, BAT_READ)) == NULL) {
- goto error;
- }
dbg = ATOMIC_GET(&GDKdebug);
ATOMIC_AND(&GDKdebug, ~CHECKMASK);
if (needcommit && bm_commit(lg, NULL, NULL, 0) != GDK_SUCCEED) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]