[SERVER-7326] "validate" command should perform full index validation Created: 11/Oct/12 Updated: 05/Dec/16 Resolved: 29/Apr/16 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Admin, Index Maintenance |
| Affects Version/s: | None |
| Fix Version/s: | 3.3.6 |
| Type: | New Feature | Priority: | Major - P3 |
| Reporter: | Tad Marshall | Assignee: | Robert Guo (Inactive) |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sprint: | Query 2.7.8, TIG 10 (02/19/16), TIG 11 (03/11/16), TIG 12 (04/01/16), TIG 13 (04/22/16), TIG 14 (05/13/16) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
If a user tries to use the validate command to validate an index, it sort of works, but it generates errors in the server log and incorrectly reports that the index has failed validation. By "sort of works", I mean that it correctly lists the extents used by the index and correctly reports the datasize and last extent size. It incorrectly reports the number of btree buckets as the number of records. It also generates multiple errors logged on the server and incorrectly provides "advice" : "ns corrupt, requires repair". It is easy to know that the specified collection is actually an index and to validate it as an index instead of as a normal collection. The validate() command (without { full : true }) should return correct and useful information. The command "db.indexName.validate(true)" should validate that the index entries actually point to valid records. We currently have no function that does this, and it is not done by "db.collection.validate(true)", presumably because it would be an expensive operation. This would be a very useful addition to the set of available diagnostic features. |
| Comments |
| Comment by Robert Guo (Inactive) [ 29/Apr/16 ] |
|
Documentation Changes: validate() is documented on the page: https://docs.mongodb.org/manual/reference/command/validate/ For the description of full: true, we could expand it to something like "new for 3.4: Provide cross validation between indexes and the data in the collection, as well as additional checks on indexes and data". The current description is: "provides a more thorough scan of the data." |
| Comment by Robert Guo (Inactive) [ 29/Apr/16 ] |
|
Most of the work for validate() has been done as part of this ticket and The one piece remaining is jason.rassi's comment about verifying index key ordering, which will be tracked in |
| Comment by Githook User [ 14/Apr/16 ] |
|
Author: {u'username': u'guoyr', u'name': u'Robert Guo', u'email': u'robert.guo@10gen.com'}Message: |
| Comment by Githook User [ 14/Apr/16 ] |
|
Author: {u'username': u'guoyr', u'name': u'Robert Guo', u'email': u'robert.guo@10gen.com'}Message: |
| Comment by J Rassi [ 23/Jul/14 ] |
|
Converted ticket to feature request. The "validate" command should contain functionality to perform the following sanity checks for each index in a collection:
|