fix transaction accounting in pgf_boot_ngf & pgf_checkout_revision

This commit is contained in:
Krasimir Angelov
2023-03-02 09:08:14 +01:00
parent 91769c7ff2
commit b8c9569f04

View File

@@ -153,12 +153,15 @@ PgfDB *pgf_read_ngf(const char *fpath,
db = new PgfDB(fpath, O_RDWR, 0, 0); db = new PgfDB(fpath, O_RDWR, 0, 0);
{ {
DB_scope scope(db, WRITER_SCOPE); DB_scope scope(db, READER_SCOPE);
ref<PgfPGF> pgf = db->get_active_revision(); ref<PgfPGF> pgf = db->get_active_revision();
*revision = db->register_revision(pgf.tagged(), PgfDB::get_txn_id()); *revision = 0;
if (pgf != 0) {
*revision = db->register_revision(pgf.tagged(), PgfDB::get_txn_id()-1);
db->ref_count++;
}
} }
db->ref_count++;
return db; return db;
} PGF_API_END } PGF_API_END
@@ -1245,11 +1248,11 @@ PGF_API
PgfRevision pgf_checkout_revision(PgfDB *db, PgfExn *err) PgfRevision pgf_checkout_revision(PgfDB *db, PgfExn *err)
{ {
PGF_API_BEGIN { PGF_API_BEGIN {
DB_scope scope(db, WRITER_SCOPE); DB_scope scope(db, READER_SCOPE);
ref<PgfPGF> pgf = db->get_active_revision(); ref<PgfPGF> pgf = db->get_active_revision();
object rev = 0; object rev = 0;
if (pgf != 0) { if (pgf != 0) {
rev = db->register_revision(pgf.tagged(), PgfDB::get_txn_id()); rev = db->register_revision(pgf.tagged(), PgfDB::get_txn_id()-1);
db->ref_count++; db->ref_count++;
} }
return rev; return rev;