у нас есть приложение, написанное на Java (Spring Boot), которое использует Jackrabbit с MongoDB, это конфигурация MongoDB:
@Configuration
@Profile("production")
public class MongoRepositoryInitializer {
@Value("${oak.mongo.db}")
private String mongoDbName;
@Value("${oak.mongo.uri}")
private String mongoUri;
@Bean
public Repository repository(DocumentNodeStore documentNodeStore) {
return new Jcr(new Oak(documentNodeStore)).createRepository();
}
@Bean
public MongoClient mongoClient() {
new MongoClientOptions.Builder()
.maxConnectionIdleTime(30000)
.build();
return new MongoClient(new MongoClientURI("mongodb://" + mongoUri));
}
@Bean
public MongoDatabase mongoDatabase(MongoClient mongoClient) {
return mongoClient.getDatabase(mongoDbName);
}
@Bean
public MongoBlobStore mongoBlobStore(MongoClient mongoClient) {
return new MongoBlobStore(mongoClient.getDatabase(mongoDbName));
}
@Bean
public DocumentNodeStore documentNodeStore(MongoClient mongoClient, MongoBlobStore mongoBlobStore) {
return MongoDocumentNodeStoreBuilder
.newMongoDocumentNodeStoreBuilder().setMongoDB(mongoClient, mongoDbName, 16)
.setBlobStore(mongoBlobStore)
.build();
}
}
у нас есть две неприятные проблемы с MongoDB (или, возможно, jackrabbit). Первая проблема состоит в том, что через некоторое время, когда мы запустили приложение, мы получаем следующую ошибку:
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore
- Background operation failed: org.apache.jackrabbit.oak.plug
ins.document.DocumentStoreException: This oak instance failed to update
the
lease in time and can therefore no longer access this DocumentNodeStore.
org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This
oak
instance failed to update the lease in time and can therefore no longer
access this DocumentNodeStore.
, мы можем получить эту ошибку, только перезапустив MongoDB.
вторая проблема заключается в том, что после перезапуска приложения (без перезапуска MongoDB) мы получаем следующие журналы, и нам нужно подождать некоторое время (приблизительно 100 секунд) для полного запуска приложения:
2020-05-03 16:12:44.059 INFO 13854 --- [ restartedMain] org.mongodb.driver.cluster : Cluster created with settings {hosts=[192.168.0.176:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2020-05-03 16:12:44.176 INFO 13854 --- [168.0.176:27017] org.mongodb.driver.connection : Opened connection [connectionId{localValue:1, serverValue:36}] to 192.168.0.176:27017
2020-05-03 16:12:44.182 INFO 13854 --- [ restartedMain] org.mongodb.driver.cluster : Cluster description not yet available. Waiting for 30000 ms before timing out
2020-05-03 16:12:44.183 INFO 13854 --- [168.0.176:27017] org.mongodb.driver.cluster : Monitor thread successfully connected to server with description ServerDescription{address=192.168.0.176:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 2, 5]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=5367075}
2020-05-03 16:12:44.205 INFO 13854 --- [ restartedMain] org.mongodb.driver.connection : Opened connection [connectionId{localValue:2, serverValue:37}] to 192.168.0.176:27017
2020-05-03 16:12:44.462 INFO 13854 --- [ restartedMain] o.a.j.o.p.d.mongo.MongoDocumentStore : Connected to MongoDB 4.2.5 with maxReplicationLagMillis 21600000, maxDeltaForModTimeIdxSecs 60, disableIndexHint false, clientSessionSupported false, clientSessionInUse true, serverStatus WriteConcern{w=null, wTimeout=null ms, fsync=null, journal=null
2020-05-03 16:12:44.489 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Found an existing possibly active cluster node info (12) for this instance: mac:525400bb0ae9//home/mehrdad/epic/parent, will try use it.
2020-05-03 16:12:44.489 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 106s left
2020-05-03 16:12:49.492 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 101s left
2020-05-03 16:12:54.495 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 96s left
2020-05-03 16:12:59.498 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 91s left
2020-05-03 16:13:04.500 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 86s left
2020-05-03 16:13:09.502 INFO 13854 --- [ restartedMain] o.a.j.o.p.document.ClusterNodeInfo : Waiting for cluster node 12's lease to expire: 81s left
кажется, что эти проблемы связаны.
Я искал inte rnet, некоторые люди говорят, что это из-за плохого завершения работы сервера jackrabbit, но я не смог найти правильный способ отключения сервера. Буду признателен за любые рекомендации