LMDB: MDB_BAD_VALSIZE error #778

Open
opened 2024-03-18 15:41:25 +00:00 by jpds · 2 comments
Contributor

I've seen this error twice now:

garage[1863]: 2024-03-18T15:31:11.403215Z ERROR garage_util::background::worker: Error in worker object sync (TID 23): Could not reach quorum of 3. 2 of 3 request succeeded, others returned errors: ["Remote error: DB error: LMDB: MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size"]

The previous time was when I attempted to migrate a node from Sled, but this time it was (of course) - when a Sled node tried to sync data to a node with LMDB configured.

I've seen this error twice now: ``` garage[1863]: 2024-03-18T15:31:11.403215Z ERROR garage_util::background::worker: Error in worker object sync (TID 23): Could not reach quorum of 3. 2 of 3 request succeeded, others returned errors: ["Remote error: DB error: LMDB: MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size"] ``` The previous time was when I attempted to migrate a node from Sled, but this time it was (of course) - when a Sled node tried to sync data to a node with LMDB configured.
Owner

Do you have objects with very long names? LMDB keys are limited to 511 bytes, and Garage uses 32 of those bytes to store the bucket ID, so you cannot have an object with a key longer than 479 bytes. If you need to store longer object names I think your only remaining choice will be to use sqlite (which is pretty good tbh, probably not noticably slower than lmdb)

Do you have objects with very long names? LMDB keys are limited to 511 bytes, and Garage uses 32 of those bytes to store the bucket ID, so you cannot have an object with a key longer than 479 bytes. If you need to store longer object names I think your only remaining choice will be to use sqlite (which is pretty good tbh, probably not noticably slower than lmdb)
Author
Contributor

I migrated this LMDB node over to SQLite in the morning:

.rw-r--r-- 4.7G garage 19 Mar 17:11 db.sqlite

It's been struggling to maintain the RPC connections to the other nodes and has using a single core at almost 100% usage the whole time (though it does have a resync queue of 5k items right now). Though, appears to be metadata partition related and it isn't using the network much.

I migrated this LMDB node over to SQLite in the morning: ``` .rw-r--r-- 4.7G garage 19 Mar 17:11 db.sqlite ``` It's been struggling to maintain the RPC connections to the other nodes and has using a single core at almost 100% usage the whole time (though it does have a resync queue of 5k items right now). Though, appears to be metadata partition related and it isn't using the network much.
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Deuxfleurs/garage#778
No description provided.