use of com.mongodb.connection.StreamFactoryFactory in project mongo-java-driver by mongodb.
the class MongoClients method createWithAsynchronousSocketChannel.
private static MongoClient createWithAsynchronousSocketChannel(final MongoClientSettings settings, @Nullable final MongoDriverInformation mongoDriverInformation) {
StreamFactoryFactory streamFactoryFactory = AsynchronousSocketChannelStreamFactoryFactory.builder().build();
StreamFactory streamFactory = streamFactoryFactory.create(settings.getSocketSettings(), settings.getSslSettings());
StreamFactory heartbeatStreamFactory = streamFactoryFactory.create(settings.getHeartbeatSocketSettings(), settings.getSslSettings());
return createMongoClient(settings, mongoDriverInformation, streamFactory, heartbeatStreamFactory, null);
}
use of com.mongodb.connection.StreamFactoryFactory in project mongo-java-driver by mongodb.
the class AbstractUnifiedTest method setUp.
@Before
public void setUp() {
assumeFalse(skipTest);
assumeTrue("Skipping test: " + definition.getString("skipReason", new BsonString("")).getValue(), !definition.containsKey("skipReason"));
assumeFalse("Skipping test of count", filename.equals("count.json"));
collectionHelper = new CollectionHelper<Document>(new DocumentCodec(), new MongoNamespace(databaseName, collectionName));
collectionHelper.killAllSessions();
if (!isDataLakeTest()) {
collectionHelper.create(collectionName, new CreateCollectionOptions(), WriteConcern.MAJORITY);
}
if (!data.isEmpty()) {
List<BsonDocument> documents = new ArrayList<BsonDocument>();
for (BsonValue document : data) {
documents.add(document.asDocument());
}
collectionHelper.insertDocuments(documents, WriteConcern.MAJORITY);
}
if (definition.containsKey("failPoint")) {
collectionHelper.runAdminCommand(definition.getDocument("failPoint"));
}
final BsonDocument clientOptions = definition.getDocument("clientOptions", new BsonDocument());
connectionString = getConnectionString();
useMultipleMongoses = definition.getBoolean("useMultipleMongoses", BsonBoolean.FALSE).getValue();
if (useMultipleMongoses) {
assumeTrue(isSharded());
connectionString = getMultiMongosConnectionString();
assumeTrue("The system property org.mongodb.test.transaction.uri is not set.", connectionString != null);
}
MongoClientSettings.Builder builder = getMongoClientSettingsBuilder().applyConnectionString(connectionString).addCommandListener(commandListener).applyToClusterSettings(clusterSettingsBuilder -> {
if (clientOptions.containsKey("serverSelectionTimeoutMS")) {
clusterSettingsBuilder.serverSelectionTimeout(clientOptions.getNumber("serverSelectionTimeoutMS").longValue(), MILLISECONDS);
}
if (clientOptions.containsKey("directConnection")) {
setDirectConnection(clusterSettingsBuilder);
}
}).applyToSocketSettings(new Block<SocketSettings.Builder>() {
@Override
public void apply(final SocketSettings.Builder builder) {
builder.readTimeout(clientOptions.getInt32("socketTimeoutMS", new BsonInt32(toIntExact(SECONDS.toMillis(5)))).getValue(), MILLISECONDS);
if (clientOptions.containsKey("connectTimeoutMS")) {
builder.connectTimeout(clientOptions.getNumber("connectTimeoutMS").intValue(), MILLISECONDS);
}
}
}).writeConcern(getWriteConcern(clientOptions)).readConcern(getReadConcern(clientOptions)).readPreference(getReadPreference(clientOptions)).retryWrites(clientOptions.getBoolean("retryWrites", BsonBoolean.FALSE).getValue()).retryReads(false).applyToConnectionPoolSettings(poolSettingsBuilder -> {
poolSettingsBuilder.addConnectionPoolListener(connectionPoolListener);
if (clientOptions.containsKey("minPoolSize")) {
poolSettingsBuilder.minSize(clientOptions.getInt32("minPoolSize").getValue());
}
}).applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(50, MILLISECONDS);
builder.minHeartbeatFrequency(MIN_HEARTBEAT_FREQUENCY_MS, MILLISECONDS);
builder.addServerListener(serverListener);
}
});
if (clientOptions.containsKey("heartbeatFrequencyMS")) {
builder.applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(clientOptions.getInt32("heartbeatFrequencyMS").intValue(), MILLISECONDS);
}
});
}
if (clientOptions.containsKey("appname")) {
builder.applicationName(clientOptions.getString("appname").getValue());
}
if (clientOptions.containsKey("w")) {
if (clientOptions.isString("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getString("w").getValue()));
} else if (clientOptions.isNumber("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getNumber("w").intValue()));
}
}
StreamFactoryFactory streamFactoryFactory = getStreamFactoryFactory();
if (streamFactoryFactory != null) {
builder.streamFactoryFactory(streamFactoryFactory);
}
mongoClient = createMongoClient(builder.build());
database = mongoClient.getDatabase(databaseName);
if (useMultipleMongoses) {
// non-transactional distinct operation to avoid StaleDbVersion error
runDistinctOnEachNode();
}
helper = new JsonPoweredCrudTestHelper(description, database, database.getCollection(collectionName, BsonDocument.class), null, mongoClient);
sessionsMap = new HashMap<>();
lsidMap = new HashMap<>();
if (createSessions && serverVersionAtLeast(3, 6)) {
ClientSession sessionZero = createSession("session0");
ClientSession sessionOne = createSession("session1");
sessionsMap.put("session0", sessionZero);
sessionsMap.put("session1", sessionOne);
lsidMap.put("session0", sessionZero.getServerSession().getIdentifier());
lsidMap.put("session1", sessionOne.getServerSession().getIdentifier());
}
}
use of com.mongodb.connection.StreamFactoryFactory in project spring-data-mongodb by spring-projects.
the class MongoClientSettingsFactoryBean method createInstance.
@Override
protected MongoClientSettings createInstance() {
Builder builder = //
MongoClientSettings.builder().readPreference(//
readPreference).writeConcern(//
writeConcern).readConcern(//
readConcern).codecRegistry(//
codecRegistry).applicationName(//
applicationName).autoEncryptionSettings(//
autoEncryptionSettings).applyToClusterSettings((settings) -> {
settings.serverSelectionTimeout(clusterServerSelectionTimeoutMS, TimeUnit.MILLISECONDS);
if (clusterConnectionMode != null) {
settings.mode(clusterConnectionMode);
}
settings.requiredReplicaSetName(clusterRequiredReplicaSetName);
if (!CollectionUtils.isEmpty(clusterHosts)) {
settings.hosts(clusterHosts);
}
settings.localThreshold(clusterLocalThresholdMS, TimeUnit.MILLISECONDS);
// settings.maxWaitQueueSize(clusterMaxWaitQueueSize);
settings.requiredClusterType(custerRequiredClusterType);
if (StringUtils.hasText(clusterSrvHost)) {
settings.srvHost(clusterSrvHost);
}
}).applyToConnectionPoolSettings((settings) -> {
settings.minSize(poolMinSize);
settings.maxSize(poolMaxSize);
settings.maxConnectionIdleTime(poolMaxConnectionIdleTimeMS, TimeUnit.MILLISECONDS);
settings.maxWaitTime(poolMaxWaitTimeMS, TimeUnit.MILLISECONDS);
settings.maxConnectionLifeTime(poolMaxConnectionLifeTimeMS, TimeUnit.MILLISECONDS);
// settings.maxWaitQueueSize(poolMaxWaitQueueSize);
settings.maintenanceFrequency(poolMaintenanceFrequencyMS, TimeUnit.MILLISECONDS);
settings.maintenanceInitialDelay(poolMaintenanceInitialDelayMS, TimeUnit.MILLISECONDS);
}).applyToServerSettings((settings) -> {
settings.minHeartbeatFrequency(serverMinHeartbeatFrequencyMS, TimeUnit.MILLISECONDS);
settings.heartbeatFrequency(serverHeartbeatFrequencyMS, TimeUnit.MILLISECONDS);
}).applyToSocketSettings((settings) -> {
settings.connectTimeout(socketConnectTimeoutMS, TimeUnit.MILLISECONDS);
settings.readTimeout(socketReadTimeoutMS, TimeUnit.MILLISECONDS);
settings.receiveBufferSize(socketReceiveBufferSize);
settings.sendBufferSize(socketSendBufferSize);
}).applyToSslSettings((settings) -> {
settings.enabled(sslEnabled);
if (sslEnabled) {
settings.invalidHostNameAllowed(sslInvalidHostNameAllowed);
try {
settings.context(StringUtils.hasText(sslProvider) ? SSLContext.getInstance(sslProvider) : SSLContext.getDefault());
} catch (NoSuchAlgorithmException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}
});
if (streamFactoryFactory != null) {
builder = builder.streamFactoryFactory(streamFactoryFactory);
}
if (retryReads != null) {
builder = builder.retryReads(retryReads);
}
if (retryWrites != null) {
builder = builder.retryWrites(retryWrites);
}
if (uUidRepresentation != null) {
builder = builder.uuidRepresentation(uUidRepresentation);
}
if (serverApi != null) {
builder = builder.serverApi(serverApi);
}
return builder.build();
}
use of com.mongodb.connection.StreamFactoryFactory in project spring-boot by spring-projects.
the class MongoReactiveAutoConfigurationTests method nettyStreamFactoryFactoryIsConfiguredAutomatically.
@Test
void nettyStreamFactoryFactoryIsConfiguredAutomatically() {
AtomicReference<EventLoopGroup> eventLoopGroupReference = new AtomicReference<>();
this.contextRunner.run((context) -> {
assertThat(context).hasSingleBean(MongoClient.class);
StreamFactoryFactory factory = getSettings(context).getStreamFactoryFactory();
assertThat(factory).isInstanceOf(NettyStreamFactoryFactory.class);
EventLoopGroup eventLoopGroup = (EventLoopGroup) ReflectionTestUtils.getField(factory, "eventLoopGroup");
assertThat(eventLoopGroup.isShutdown()).isFalse();
eventLoopGroupReference.set(eventLoopGroup);
});
assertThat(eventLoopGroupReference.get().isShutdown()).isTrue();
}
use of com.mongodb.connection.StreamFactoryFactory in project mongo-java-driver by mongodb.
the class MongoClientImpl method getStreamFactory.
private static StreamFactory getStreamFactory(final MongoClientSettings settings, final boolean isHeartbeat) {
StreamFactoryFactory streamFactoryFactory = settings.getStreamFactoryFactory();
SocketSettings socketSettings = isHeartbeat ? settings.getHeartbeatSocketSettings() : settings.getSocketSettings();
if (streamFactoryFactory == null) {
return new SocketStreamFactory(socketSettings, settings.getSslSettings());
} else {
return streamFactoryFactory.create(socketSettings, settings.getSslSettings());
}
}
Aggregations