Example #1
0
File: config.cpp Project: jch/mongo
    ChunkManagerPtr DBConfig::getChunkManager( const string& ns , bool reload ){
        scoped_lock lk( _lock );

        ChunkManagerPtr m = _shards[ns];
        if ( m && ! reload )
            return m;

        uassert( 10181 ,  (string)"not sharded:" + ns , _isSharded( ns ) );
        if ( m && reload )
            log() << "reloading shard info for: " << ns << endl;
        m.reset( new ChunkManager( this , ns , _sharded[ ns ].key , _sharded[ns].unique ) );
        _shards[ns] = m;
        return m;
    }
Example #2
0
File: config.cpp Project: jch/mongo
    ChunkManagerPtr DBConfig::shardCollection( const string& ns , ShardKeyPattern fieldsAndOrder , bool unique ){
        if ( ! _shardingEnabled )
            throw UserException( 8042 , "db doesn't have sharding enabled" );
        
        scoped_lock lk( _lock );

        ChunkManagerPtr info = _shards[ns];
        if ( info )
            return info;
        
        if ( _isSharded( ns ) )
            throw UserException( 8043 , "already sharded" );

        log() << "enable sharding on: " << ns << " with shard key: " << fieldsAndOrder << endl;
        _sharded[ns] = CollectionInfo( fieldsAndOrder , unique );

        info.reset( new ChunkManager( this , ns , fieldsAndOrder , unique ) );
        _shards[ns] = info;
        return info;

    }