summaryrefslogtreecommitdiff
path: root/src/mongo/s/collection_metadata.cpp
diff options
context:
space:
mode:
authorGreg Studer <greg@10gen.com>2014-11-18 12:54:36 -0500
committerGreg Studer <greg@10gen.com>2014-11-18 15:30:58 -0500
commit813a2908ed3f35e1e395179983e0f09b0fee8fe5 (patch)
tree8a2954e9c10f9511ee1cd3e9f6756331814257fe /src/mongo/s/collection_metadata.cpp
parentcf589f12e49136cfaa694a3f0eb61bca6fe987e7 (diff)
downloadmongo-813a2908ed3f35e1e395179983e0f09b0fee8fe5.tar.gz
SERVER-16223 invariant not dassert on metadata reload sanity checks
Diffstat (limited to 'src/mongo/s/collection_metadata.cpp')
-rw-r--r--src/mongo/s/collection_metadata.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/mongo/s/collection_metadata.cpp b/src/mongo/s/collection_metadata.cpp
index 8f1fd4162ca..e4ec828caec 100644
--- a/src/mongo/s/collection_metadata.cpp
+++ b/src/mongo/s/collection_metadata.cpp
@@ -108,7 +108,7 @@ namespace mongo {
newShardVersion > _collVersion ? newShardVersion : this->_collVersion;
metadata->fillRanges();
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -162,7 +162,7 @@ namespace mongo {
newShardVersion > _collVersion ? newShardVersion : this->_collVersion;
metadata->fillRanges();
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -204,7 +204,7 @@ namespace mongo {
metadata->_shardVersion = _shardVersion;
metadata->_collVersion = _collVersion;
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -262,7 +262,7 @@ namespace mongo {
metadata->_pendingMap.insert( make_pair( pending.getMin(), pending.getMax() ) );
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -353,7 +353,7 @@ namespace mongo {
metadata->_shardVersion > _collVersion ? metadata->_shardVersion : _collVersion;
metadata->fillRanges();
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -436,7 +436,7 @@ namespace mongo {
metadata->_chunksMap.insert( make_pair( minKey, maxKey ) );
- dassert(metadata->isValid());
+ invariant(metadata->isValid());
return metadata.release();
}
@@ -669,9 +669,26 @@ namespace mongo {
}
bool CollectionMetadata::isValid() const {
- if ( _shardVersion > _collVersion ) return false;
- if ( _collVersion.majorVersion() == 0 ) return false;
- if ( _collVersion.epoch() != _shardVersion.epoch() ) return false;
+ if (_shardVersion > _collVersion)
+ return false;
+ if (_collVersion.majorVersion() == 0)
+ return false;
+ if (_collVersion.epoch() != _shardVersion.epoch())
+ return false;
+
+ if (_shardVersion.majorVersion() > 0) {
+ // Must be chunks
+ if (_rangesMap.size() == 0 || _chunksMap.size() == 0)
+ return false;
+ }
+ else {
+ // No chunks
+ if (_shardVersion.minorVersion() > 0)
+ return false;
+ if (_rangesMap.size() > 0 || _chunksMap.size() > 0)
+ return false;
+ }
+
return true;
}