-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Testing Infrastructure
-
Fully Compatible
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Example usages:
(gdb) mongodb-help
Command - Description
mongodb-service-context - Dump the Global Service Context.
<snip>
mongodb-pprint-bson -
Interprets a pointer into raw memory as the start of a bson object. Pretty print the results.
<snip>
(gdb) mongodb-pprint-bson
Usage: mongodb-pprint-bson <ptr> <optional length>
(gdb) mongodb-pprint-bson 0x7fbfffa6394f
Pretty printing bson object at 140462604564815 (20480 bytes)
{'ident': 'collection-361-5113077617502034514',
'idxIdent': {'_id_': 'index-362-5113077617502034514',
'a.b.0_1': 'index-365-5113077617502034514',
'a.b.c_1': 'index-363-5113077617502034514',
'a.b_1': 'index-364-5113077617502034514'},
'md': {'indexes': [{'backgroundSecondary': False,
'head': 0,
'multikey': False,
'multikeyPaths': {'_id': b'\x00'},
'ready': True,
'spec': {'key': {'_id': 1}, 'name': '_id_', 'v': 2}},
{'backgroundSecondary': False,
'head': 0,
'multikey': True,
'multikeyPaths': {'a.b.c': b'\x01\x01\x01'},
'ready': True,
'spec': {'key': {'a.b.c': 1.0},
'name': 'a.b.c_1',
'v': 2}},
{'backgroundSecondary': False,
'head': 0,
'multikey': True,
'multikeyPaths': {'a.b': b'\x00\x01'},
'ready': True,
'spec': {'key': {'a.b': 1.0}, 'name': 'a.b_1', 'v': 2}},
{'backgroundSecondary': False,
'head': 0,
'multikey': False,
'multikeyPaths': {'a.b.0': b'\x00\x00\x00'},
'ready': True,
'spec': {'key': {'a.b.0': 1.0},
'name': 'a.b.0_1',
'v': 2}}],
'ns': 'tenantMigrationTenantId_test.distinct_multikey',
'options': {'uuid': UUID('5a441857-cd83-4b5f-9f96-c6d24f7a6d88')}},
'ns': 'tenantMigrationTenantId_test.distinct_multikey'}
Additionally I added a pretty printer to interpret WT_UPDATE values (their data field) as bson payloads:
(gdb) print *(WT_UPDATE*)0x7fbfffa63920
$1 = WT_UPDATE:
('txnid', '2486')
('durable_ts', '6964747752064417812')
('start_ts', '6964747752064417812')
('prev_durable_ts', '0')
('next', '0x7fbfffa6c4a0')
('size', '1023')
('type', "3 '\\003'")
('prepare_state', "0 '\\000'")
('flags', "0 '\\000'")
('data', '0x7fbfffa6394f "\\377\\003"') = {
[md] = {"ns": "tenantMigrationTenantId_test.distinct_multikey", "options": {"uuid": {"$uuid": "5a441857cd834b5f9f96c6d24f7a6d88"}}, "indexes": [{"spec": {"v": 2, "key": {"_id": 1}, "name": "_id_"}, "ready": true, "multikey": false, "multikeyPaths": {"_id": {"$binary": "AA==", "$type": "00"}}, "head": 0, "backgroundSecondary": false}, {"spec": {"v": 2, "key": {"a.b.c": 1.0}, "name": "a.b.c_1"}, "ready": true, "multikey": true, "multikeyPaths": {"a.b.c": {"$binary": "AQEB", "$type": "00"}}, "head": 0, "backgroundSecondary": false}, {"spec": {"v": 2, "key": {"a.b": 1.0}, "name": "a.b_1"}, "ready": true, "multikey": true, "multikeyPaths": {"a.b": {"$binary": "AAE=", "$type": "00"}}, "head": 0, "backgroundSecondary": false}, {"spec": {"v": 2, "key": {"a.b.0": 1.0}, "name": "a.b.0_1"}, "ready": true, "multikey": false, "multikeyPaths": {"a.b.0": {"$binary": "AAAA", "$type": "00"}}, "head": 0, "backgroundSecondary": false}]},
[idxIdent] = {"_id_": "index-362-5113077617502034514", "a.b.c_1": "index-363-5113077617502034514", "a.b_1": "index-364-5113077617502034514", "a.b.0_1": "index-365-5113077617502034514"},
[ns] = "tenantMigrationTenantId_test.distinct_multikey",
[ident] = "collection-361-5113077617502034514"
}