[SERVER-16293]  repairDatabase causes "size has to be a number" Created: 24/Nov/14  Updated: 10/Dec/14  Resolved: 24/Nov/14

Status: Closed
Project: Core Server
Component/s: Admin, Shell
Affects Version/s: 2.6.1
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Steffen Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-13737 CollectionOptions parser should skip ... Closed
Operating System: ALL
Participants:

 Description   

We want to repair all databases on one of our repsets.
But it fails for 2 of the databases.

We are using a python script to call the repair command but the error also appears if we do it manually from the shell. It doesn't work on Primary nor Secondary. Other databases on the same servers succeed to be repaired.

repset1:SECONDARY> db.repairDatabase()
{ "ok" : 0, "errmsg" : "size has to be a number", "code" : 2 }

db.stats() from both databases

repset1:SECONDARY> db.stats()
{
	"db" : "database",
	"collections" : 9,
	"objects" : 12210879,
	"avgObjSize" : 251.01382398433398,
	"dataSize" : 3065099432,
	"storageSize" : 5368098816,
	"numExtents" : 52,
	"indexes" : 19,
	"indexSize" : 6315052464,
	"fileSize" : 64326991872,
	"nsSizeMB" : 16,
	"dataFileVersion" : {
		"major" : 4,
		"minor" : 5
	},
	"extentFreeList" : {
		"num" : 37,
		"totalSize" : 50291441344
	},
	"ok" : 1
}

repset1:SECONDARY> db.stats()
{
	"db" : "database2",
	"collections" : 11,
	"objects" : 3025743,
	"avgObjSize" : 701.3263294337953,
	"dataSize" : 2122033232,
	"storageSize" : 2852605952,
	"numExtents" : 81,
	"indexes" : 41,
	"indexSize" : 1849067808,
	"fileSize" : 6373244928,
	"nsSizeMB" : 16,
	"dataFileVersion" : {
		"major" : 4,
		"minor" : 5
	},
	"extentFreeList" : {
		"num" : 9,
		"totalSize" : 39604224
	},
	"ok" : 1
}



 Comments   
Comment by J Rassi [ 24/Nov/14 ]

I can confirm that this issue is a dup of SERVER-13737, which has been fixed for 2.6.2. Please upgrade to 2.6.5 (the latest release in the 2.6.x series), and retry running the repairDatabase command. The command should succeed, and it should also remove the null value for "size" in the collection options for each collection in the database.

Comment by Steffen [ 24/Nov/14 ]

these 3 collections should not be capped.
So we need ot remove the null options.

Comment by Steffen [ 24/Nov/14 ]

Here is the output

mongos> db.system.namespaces.find()
{ "name" : "database.profileBadges", "options" : { "create" : "profileBadges", "capped" : null, "size" : null, "max" : null } }
{ "name" : "database.system.indexes" }
{ "name" : "database.profileBadges.$_id_" }
{ "name" : "database.headerRequests" }
{ "name" : "database.headerRequests.$_id_" }
{ "name" : "database.accountWarnings" }
{ "name" : "database.accountWarnings.$_id_" }
{ "name" : "database.campaignMogileFiles", "options" : { "create" : "campaignMogileFiles" } }
{ "name" : "database.campaignMogileFiles.$_id_" }
{ "name" : "database.profileBadges.$accountId_1_type_1" }
{ "name" : "database.accountWarnings.$createdAt_-1" }
{ "name" : "database.accountWarnings.$accountId_1_warning_1" }
{ "name" : "database.headerRequests.$objectId_1_objectType_1_requestType_1_sourceAccountId_1_targetAccountId_1_state_1" }
{ "name" : "database.campaignMogileFiles.$accountId_1_campaignType_1" }
{ "name" : "database.headerRequests.$sourceAccountId_1_requestType_1_objectType_1_createdAt_1" }
{ "name" : "database.headerRequests.$state_1_sourceAccountId_1_requestType_1_objectType_1_createdAt_1" }
{ "name" : "database.googleSiteSearchCounters", "options" : { "create" : "googleSiteSearchCounters", "max" : 10, "autoIndexId" : false, "capped" : true, "size" : 10 } }
{ "name" : "database.curriculaVitae" }
{ "name" : "database.curriculaVitae.$_id_" }
{ "name" : "database.curriculaVitae.$accountId_1" }
Type "it" for more
mongos> it
{ "name" : "database.googleSiteSearchCounters.$_id_" }
{ "name" : "database.googleSiteSearchCounters.$date_1" }
{ "name" : "database.claimRequestArchive" }
{ "name" : "database.claimRequestArchive.$_id_" }
{ "name" : "database.profileBadges.$type_1" }
{ "name" : "database.headerRequests.$targetAccountId_1_state_1_createdAt_-1" }

mongos> db.system.namespaces.find()
{ "name" : "database2.keywords", "options" : { "create" : "database2. } }
{ "name" : "database2.system.indexes" }
{ "name" : "database2.keywords.$_id_" }
{ "name" : "database2.keywordFollowers", "options" : { "create" : "keywordFollowers", "capped" : null, "size" : null, "max" : null } }
{ "name" : "database2.keywordFollowers.$_id_" }
{ "name" : "database2.keywordInvitations", "options" : { "create" : "keywordInvitations", "capped" : null, "size" : null, "max" : null } }
{ "name" : "database2.keywordInvitations.$_id_" }
{ "name" : "database2.keywordPublicationMappings" }
{ "name" : "database2.keywordPublicationMappings.$_id_" }
{ "name" : "database2.keywordAssignments" }
{ "name" : "database2.keywordAssignments.$_id_" }
{ "name" : "database2.keywordAccountSkillMappings", "options" : { "create" : "keywordAccountSkillMappings" } }
{ "name" : "database2.keywordAccountSkillMappings.$_id_" }
{ "name" : "database2.endorsements", "options" : { "create" : "endorsements" } }
{ "name" : "database2.endorsements.$_id_" }
{ "name" : "database2.temp_reduce_rob", "options" : { "create" : "database2.temp_reduce_rob" } }
{ "name" : "database2.temp_reduce_rob.$_id_" }
{ "name" : "database2.keywordJobMappings" }
{ "name" : "database2.keywordJobMappings.$_id_" }
{ "name" : "database2.keywords.$name_1" }
Type "it" for more
mongos> it
{ "name" : "database2.keywords.$hash_1" }
{ "name" : "database2.keywords.$orderBy.accountMappingCount_1" }
{ "name" : "database2.keywords.$topicId_1" }
{ "name" : "database2.keywords.$aliases.hash_1" }
{ "name" : "database2.keywordInvitations.$keywordId_1" }
{ "name" : "database2.keywords.$orderBy.followerCount_1" }
{ "name" : "database2.keywords.$key_1" }
{ "name" : "database2.keywords.$state_1_orderBy.latestPostActivity_-1" }
{ "name" : "database2.keywordFollowers.$accountId_1_keyword_1" }
{ "name" : "database2.keywordFollowers.$keywordId_1_createdAt_-1" }
{ "name" : "database2.keywordPublicationMappings.$keywords.keyword_1" }
{ "name" : "database2.keywordPublicationMappings.$publicationUid_1" }
{ "name" : "database2.keywords.$orderBy.postCount_1_state_1" }
{ "name" : "database2.keywords.$state_1_orderBy.followerCount_-1" }
{ "name" : "database2.keywordAccountSkillMappings.$accountId_1" }
{ "name" : "database2.keywordAccountSkillMappings.$skills_keywordId_1" }
{ "name" : "database2.keywords.$orderBy.skillCount_-1" }
{ "name" : "database2.endorsements.$targetAccountId_1_keywordId_1_sourceAccountId_1" }
{ "name" : "database2.endorsements.$sourceAccountId_1_targetAccountId_1" }
{ "name" : "database2.endorsements.$createdAt_-1_state_1" }
Type "it" for more
mongos> it
{ "name" : "database2.keywords.$skill_1" }
{ "name" : "database2.keywords.$orderBy.skillsCount_1" }
{ "name" : "database2.keywords.$orderBy.endorsementCount_1" }
{ "name" : "database2.keywords.$normalized_1_unique" }
{ "name" : "database2.endorsements.$keywordId_1_state_1" }
{ "name" : "database2.keywords.$state_1_createdAt_-1" }
{ "name" : "database2.endorsements.$targetAccountId_1_state_1_createdAt_-1" }
{ "name" : "database2.keywords.$scienceId_1_scienceNodeLevel_1" }
{ "name" : "database2.keywordJobMappings.$keywords.keyword_1" }

I can see that there a capped collections with options that have size "null"
How to fix that?

Comment by J Rassi [ 24/Nov/14 ]

Could you paste the output of running "db.system.namespaces.find()" against each of these databases?

Generated at Thu Feb 08 03:40:35 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.