как правильно отключить сервер Jackrabbit + MongoDB - PullRequest
0 голосов
/ 03 мая 2020

у нас есть приложение, написанное на 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, но я не смог найти правильный способ отключения сервера. Буду признателен за любые рекомендации

1 Ответ

0 голосов
/ 03 мая 2020

Для первой проблемы вы должны проверить системный журнал; может быть, экземпляр Mon go не отвечал более 120 секунд?

Для второй проблемы: вам нужно убедиться, что при завершении работы вызывается метод утилизации DocumentStore.

...