public LumongoNode(MongoConfig mongoConfig, String localServer, int instance) throws Exception {
log.info("Using mongo <" + mongoConfig.getServerAddresses() + ">");
MongoClient mongo = new MongoClient(mongoConfig.getServerAddresses());
ClusterHelper clusterHelper = new ClusterHelper(mongo, mongoConfig.getDatabaseName());
LocalNodeConfig localNodeConfig = clusterHelper.getNodeConfig(localServer, instance);
ClusterConfig clusterConfig = clusterHelper.getClusterConfig();
log.info("Loaded cluster config: <" + clusterConfig + ">");
MongoDirectory.setMaxIndexBlocks(clusterConfig.getMaxIndexBlocks());
this.indexManager = new LumongoIndexManager(mongo, mongoConfig, clusterConfig);
this.externalServiceServer = new ExternalServiceServer(localNodeConfig, indexManager);
this.internalServiceServer = new InternalServiceServer(localNodeConfig, indexManager);
if (localNodeConfig.hasRestPort()) {
this.restServiceManager = new RestServiceManager(localNodeConfig, indexManager);
}
else {
this.restServiceManager = null;
}
Nodes nodes = clusterHelper.getNodes();
this.hazelcastManager = HazelcastManager
.createHazelcastManager(localNodeConfig, indexManager, nodes.getHazelcastNodes(), mongoConfig.getDatabaseName());
}