Skip to content

Commit 6c2715f

Browse files
committed
Add more debugging information for conflicting freelist
1 parent 9de294a commit 6c2715f

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

dependencies/lmdb/libraries/liblmdb/mdb.c

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4451,10 +4451,32 @@ mdb_freelist_save(MDB_txn *txn)
44514451
rc = MDB_BAD_TXN;
44524452
break;
44534453
}
4454-
if (mdb_midl_xmerge(&test_idl, (MDB_ID *) data.mv_data)) {
4455-
fprintf(stderr, "freelist duplicates/overlaps in free list\n", start_written);
4454+
if (rc = mdb_midl_xmerge(&test_idl, (MDB_ID *) data.mv_data)) {
4455+
last = *(txnid_t *) key.mv_data;
4456+
fprintf(stderr, "freelist duplicates/overlaps in free list %u %u %u %u %u %u %i %i %i %i %i %u %u\n", last, data.mv_size, start_written,
4457+
pglast, env->me_freelist_start, env->me_freelist_end,
4458+
freelist_written_start, env->me_freelist_written_start, freelist_written_end, env->me_freelist_written_end,
4459+
i, fl_writes[0], fl_writes[1]);
4460+
fprintf(stderr, "conflicting freelist to save:\n");
4461+
mdb_midl_print(stderr, test_idl);
4462+
fprintf(stderr, "from the original freelist to save:\n");
4463+
mdb_midl_print(stderr, pghead);
4464+
fprintf(stderr, "All the entries that we are saving to the freelist:\n");
4465+
// print out all the entries that we are saving to the freelist
4466+
test_idl = mdb_midl_alloc(16);
4467+
key.mv_size = sizeof(start_written);
4468+
key.mv_data = &start_written;
4469+
rc = mdb_cursor_get(&mc, &key, &data, MDB_SET);
4470+
size_t last = 0;
4471+
while (rc == 0) {
4472+
last = *(txnid_t *) key.mv_data;
4473+
fprintf(stderr, "entry %u:\n", last);
4474+
mdb_midl_print(stderr, (MDB_ID *) data.mv_data);
4475+
if (last >= env->me_freelist_end) break;
4476+
rc = mdb_cursor_get(&mc, &key, &data, MDB_NEXT);
4477+
}
44564478
last_error = malloc(100);
4457-
sprintf(last_error, "freelist entry %u not in new free list\n", start_written);
4479+
sprintf(last_error, "freelist entry %u had bad/duplicate entries, error code %u\n", last, rc);
44584480
rc = MDB_BAD_TXN;
44594481
break;
44604482
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "lmdb",
33
"author": "Kris Zyp",
4-
"version": "3.2.4",
4+
"version": "3.2.5",
55
"description": "Simple, efficient, scalable, high-performance LMDB interface",
66
"license": "MIT",
77
"repository": {

0 commit comments

Comments
 (0)