Description
SERVER-6947 describes an issue where collections created with createCollection are dumped incorrectly with all mongodump 2.2.x/2.4.x versions currently released. The incorrect dumps are characterized by invalid options present in the JSON metadata file for these collections.
One known workaround for this issue is to manually edit the JSON metadata files to correct the invalid options (note: another known workaround is to restore with mongorestore >=2.4). However, this workaround has a flaw. The JSON metadata files are created without trailing newlines; however, when users attempt to edit these files to implement the workaround, their editors will often add trailing newlines.
Restoring with these edited metadata files trips a fatal assertion in mongo::Restore::parseMetadataFile, which checks that there are no bytes in the file past the end of the first encountered JSON object. This check fails because of the trailing newline. The assertion generates the unhelpful message "JSON object size didn't match file size".
Reproduce with:
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ ./mongo --eval 'db.dropDatabase()'
|
MongoDB shell version: 2.4.1
|
connecting to: test
|
[object Object]
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ ./mongo --eval 'db.foo.insert({})'
|
MongoDB shell version: 2.4.1
|
connecting to: test
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ ./mongodump -d test
|
connected to: 127.0.0.1
|
Fri Mar 29 16:09:32.127 DATABASE: test to dump/test
|
Fri Mar 29 16:09:32.129 test.system.indexes to dump/test/system.indexes.bson
|
Fri Mar 29 16:09:32.130 1 objects
|
Fri Mar 29 16:09:32.131 test.foo to dump/test/foo.bson
|
Fri Mar 29 16:09:32.132 1 objects
|
Fri Mar 29 16:09:32.133 Metadata for test.foo to dump/test/foo.metadata.json
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ echo >> dump/test/foo.metadata.json
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ ./mongo --eval 'db.dropDatabase()'
|
MongoDB shell version: 2.4.1
|
connecting to: test
|
[object Object]
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $ ./mongorestore
|
connected to: 127.0.0.1
|
Fri Mar 29 16:09:54.016 dump/test/foo.bson
|
Fri Mar 29 16:09:54.017 going into namespace [test.foo]
|
assertion: 15934 JSON object size didn't match file size
|
rassi@laptop:~/dist/mongodb-osx-x86_64-2.4.1/bin $
|
Attachments
Issue Links
- is related to
-
SERVER-6947 db.createCollection creates undefined fields which cause mongorestore to fail
-
- Closed
-