-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Catalog and Routing
-
Fully Compatible
-
Execution EMEA Team 2023-09-18
-
None
-
None
-
None
-
None
-
None
-
None
-
None
LockRequest is 72 bytes on x64. There are simple ways to reduce space by sizing the enums to uint8_t and by using a bitfield for the bools. Also, work should be done to remove any holes. Also, I doubt we need to support a 32-bit lock recursion count/ 16-bit or even 8-bit likely suffices.
(gdb) ptype /o mongo::LockRequest.
/* offset | size */ type = struct mongo::LockRequest {
/* 0 | 8 */ mongo::Locker *locker;
/* 8 | 8 */ mongo::LockGrantNotification *notify;
/* 16 | 1 */ bool enqueueAtFront;
/* 17 | 1 */ bool compatibleFirst;
/* 18 | 1 */ bool partitioned;
/* XXX 1-byte hole */
/* 20 | 4 */ unsigned int recursiveCount;
/* 24 | 8 */ mongo::LockHead *lock;
/* 32 | 8 */ mongo::PartitionedLockHead *partitionedLock;
/* 40 | 8 */ mongo::LockRequest *prev;
/* 48 | 8 */ mongo::LockRequest *next;
/* 56 | 4 */ mongo::LockRequest::Status status;
/* 60 | 4 */ mongo::LockMode mode;
/* 64 | 4 */ mongo::LockMode convertMode;
/* 68 | 4 */ unsigned int unlockPending;
/* total size (bytes): 72 */
}