void ShardingInitializationMongoD::initializeFromShardIdentity(
    OperationContext* opCtx, const ShardIdentityType& shardIdentity) {
    invariant(serverGlobalParams.clusterRole == ClusterRole::ShardServer);
    invariant(opCtx->lockState()->isLocked());

    uassertStatusOKWithContext(
        shardIdentity.validate(),
        "Invalid shard identity document found when initializing sharding state");

    log() << "initializing sharding state with: " << shardIdentity;

    const auto& configSvrConnStr = shardIdentity.getConfigsvrConnectionString();

    auto const shardingState = ShardingState::get(opCtx);
    auto const shardRegistry = Grid::get(opCtx)->shardRegistry();

    stdx::unique_lock<stdx::mutex> ul(_initSynchronizationMutex);

    if (shardingState->enabled()) {
        uassert(40371, "", shardingState->shardId() == shardIdentity.getShardName());
        uassert(40372, "", shardingState->clusterId() == shardIdentity.getClusterId());

        auto prevConfigsvrConnStr = shardRegistry->getConfigServerConnectionString();
        uassert(40373, "", prevConfigsvrConnStr.type() == ConnectionString::SET);
        uassert(40374, "", prevConfigsvrConnStr.getSetName() == configSvrConnStr.getSetName());

        return;
    }

    auto initializationStatus = shardingState->initializationStatus();
    uassert(ErrorCodes::ManualInterventionRequired,
            str::stream() << "Server's sharding metadata manager failed to initialize and will "
                             "remain in this state until the instance is manually reset"
                          << causedBy(*initializationStatus),
            !initializationStatus);

    try {
        _initFunc(opCtx, shardIdentity, generateDistLockProcessId(opCtx));
        shardingState->setInitialized(shardIdentity.getShardName().toString(),
                                      shardIdentity.getClusterId());
    } catch (const DBException& ex) {
        shardingState->setInitialized(ex.toStatus());
    }
}
Example #2
0
bool gl4::Engine::initGL() {

    //init glfw and set start time
    glfwInit();
    _t0 = glfwGetTime();

#ifdef __APPLE__
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 2 );
#else
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 4 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 3 );
#endif
    glfwOpenWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwOpenWindowHint( GLFW_WINDOW_NO_RESIZE, GL_TRUE );

    // open window
    glfwOpenWindow( _windowWidth, _windowHeight, 0, 0, 0, 0, 0, 0, GLFW_WINDOW );

    // check if window opened correctly
    if( glfwGetWindowParam( GLFW_OPENED ) ) {
        glEnable(GL_TEXTURE_2D);
        // init GLEW with experimental features
        glewExperimental = GL_TRUE;
        GLenum err = glewInit();
        if (GLEW_OK != err)
        {
            std::cerr << "Error " << glewGetErrorString(err) << std::endl;
        }

        // glew init with "glewExperimental = GL_TRUE" fires an error
        GLenum errorID = glGetError();

        // fetching versions
        char buffer [50];
        const char *format = "%-12s %i.%i.%i\n";
        int GLFWmajor = 0, GLFWminor = 0, GLFWrev = 0;
        int OpenGLmajor = 0, OpenGLminor = 0, OpenGLrev = 0;
        glfwGetVersion( &GLFWmajor, &GLFWminor, &GLFWrev );
        OpenGLmajor = glfwGetWindowParam(GLFW_OPENGL_VERSION_MAJOR);
        OpenGLminor = glfwGetWindowParam(GLFW_OPENGL_VERSION_MINOR);

        // printing versions
        LOG("%s\n", "Using versions:");
        LOG(format, "GLFW:", GLFWmajor, GLFWminor, GLFWrev);
        LOG("%-12s %s\n", "GLEW:", glewGetString(GLEW_VERSION) );
        LOG(format, "OpenGL:", OpenGLmajor, OpenGLminor, OpenGLrev );
        LOG("%-12s %s\n", "GLSL:", glGetString(GL_SHADING_LANGUAGE_VERSION) );

        std::sprintf (buffer, format, "GL4 Engine:", GL4_ENGINE_VERION_MAJOR, GL4_ENGINE_VERION_MINOR, GL4_ENGINE_VERION_REVISION );
        LOG("%s",buffer );
        glfwSetWindowTitle( buffer );

        // make sure the managers are initialized
        gl4::ShaderManager::getInstance();
        gl4::TextureManager::getInstance();

        // init the fixed render target
        _deferredRender.init(_windowWidth, _windowHeight);

        // call user defined init
        if (_initFunc != 0)
        {
            _initFunc();
        }

        // set callbacks
        if (_keyboardCallbackFunc != 0)
        {
            glfwSetKeyCallback(_keyboardCallbackFunc);
        }
        return true;
    }

    // if unable to open window, print error
    ERRLOG("%s\n", "Could not open window");

    return false;
}