无法在jcr实现中运行版本垃圾回收

gab6jxml  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(199)

运行版本垃圾回收时出现以下错误:
“超过限制100000个文档,将下一次收集间隔缩短到37561439秒”,“logger\u name”:“org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector”,“thread\u name”:“http-nio-8080-exec-3”,“level”:“info”,路径为[]的上下文中servlet[dispatcherservlet]的“level\u value”:20000}servlet.service()引发异常[请求处理失败;嵌套异常为org.apache.jackrabbit.oak.plugins.document.documentstoreexception:读取versiongc]时发生异常,根本原因为“,”logger\u name“:”org.apache.catalina.core.containerbase.[tomcat].[localhost].[/].[dispatcherservlet],”thread\u name“:”http-nio-8080-exec-3“,”level“:”error“,”level\u value“:40000,“stack_trace”:“org.postgresql.util.psqlexception:无法更改事务中间的事务只读属性。\r\n\t org.postgresql.jdbc.pgconnection.setreadonly(pgconnection)。java:693)\r\n\tat sun.reflect.generatedmethodaccessor58.invoke(未知源)\r\n\tatsun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)\r\n\t java.lang.reflect.method.invoke(方法。java:498)\r\n\tat org.apache.tomcat.jdbc.pool.proxyconnection.invoke(proxyconnection。java:126)\r\n\t org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t地址org.apache.tomcat.jdbc.pool.interceptor.abstractcreatestatementinterceptor.invoke(abstractcreatestatementinterceptor)。java:79)\r\n\t org.apache.tomcat.jdbc.pool.interceptor.statementcache.invoke(statementcache。java:203)\r\n\t org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t地址org.apache.tomcat.jdbc.pool.interceptor.connectionstate.invoke(连接状态。java:152)\r\n\t org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t org.apache.tomcat.jdbc.pool.interceptor.abstractcreatestatementinterceptor.invoke(abstractcreatestatementinterceptor)。java:79)\r\n\t地址org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t org.apache.tomcat.jdbc.pool.trapexception.invoke(trapexception。java:40)\r\n\t org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t地址org.apache.tomcat.jdbc.pool.interceptor.abstractcreatestatementinterceptor.invoke(abstractcreatestatementinterceptor)。java:79)\r\n\t org.apache.tomcat.jdbc.pool.jdbcinterceptor.invoke(jdbcinterceptor。java:108)\r\n\t org.apache.tomcat.jdbc.pool.disposableconnectionfacade.invoke(disposableconnectionfacade)。java:81)\r\n\t地址com.sun.proxy.$proxy81.setreadonly(未知源)\r\n\tat org.apache.jackrabbit.oak.plugins.document.rdb.rdbconnectionhandler.setreadonly(rdbconnectionhandler)。java:176)\r\n\t位于org.apache.jackrabbit.oak.plugins.document.rdb.rdbconnectionhandler.getroconnection(rdbconnectionhandler)。java:61)\r\n\t地址org.apache.jackrabbit.oak.plugins.document.rdb.rdbdocumentstore.readdocumentuncached(rdbdocumentstore)。java:1897)\r\n\t位于org.apache.jackrabbit.oak.plugins.document.rdb.rdbdocumentstore.readdocumentcached(rdbdocumentstore)。java:1454)\r\n\t地址org.apache.jackrabbit.oak.plugins.document.rdb.rdbdocumentstore.internalcreateorupdate(rdbdocumentstore)。java:1557)\r\n\t位于org.apache.jackrabbit.oak.plugins.document.rdb.rdbdocumentstore.createorupdate(rdbdocumentstore)。java:367)\r\n\t地址org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector$recommendations.setlongsetting(versiongarbagecollector)。java:1200)\r\n\t org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector$recommendations.evaluate(versiongarbagecollector)。java:1156)\r\n\t地址org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector$gcjob.gc(versiongarbagecollector)。java:515)\r\n\t org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector$gcjob.run(versiongarbagecollector。java:475)\r\n\t org.apache.jackrabbit.oak.plugins.document.versiongarbagecollector.gc(versiongarbagecollector)。java:144)\r\n\t地址com.springernature.mango.cms.services.rest.service.servicescontroller.rungc(servicescontroller。java:1080)\r\n\tat com.springernature.mango.cms.services.rest.service.servicescontroller$$fastclassbyspringcglib$$bd16ea4e.invoke()\r\n\tat org.springframework.cglib.proxy.methodproxy.invoke(methodproxy)。java:204)\r\n\t地址org.springframework.aop.framework.cglibaopproxy$cglibmethodinvocation.invokejoinpoint(cglibaopproxy。java:736)\r\n\t org.springframework.aop.framework.reflectivemethodinvocation.procedue(reflectivemethodinvocation)。java:157)\r\n\t地址org.springframework.aop.aspectj.methodinvocationproceedingjoinpoint.procedue(methodinvocationproceedingjoinpoint)。java:84)\r\n\t位于com.springernature.mango.cms.handler.logginghandler.logaround(logginghandler。java:108)\r\n\tat sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)\r\n\tatsun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl。java:62)\r\n\t sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)\r\n\t java.lang.reflect.method.invoke(方法。java:498)\r\n\t地址org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethodwithgivenargs(抽象方面jadvice。java:627)\r\n\t位于org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethod(abstractaspectjadvice)。java:616)\r\n\t位于org.springframework.aop.aspectj.aspectjaroundadvice.invoke(aspectjaroundadvice)。java:70)\r\n\t地址org.springframework.aop.framework.reflectivemethodinvocation.procedue(reflectivemethodinvocation。java:179)\r\n\t位于org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor)。java:92)\r\n\t org.springframework.aop.framework.reflectivemethodinvocation.procedue(reflectivemethodinvocation)。java:179)\r\n\t地址org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy。java:671)\r\n\tat com.springernature.mango.cms.services.rest.service.servicescontroller$$enhancerbyspringcglib$$a5dbc1e7.rungc()\r\n\tat
代码:

public void runGC() {
    log.info("Running garbage collection for NodeStore");
    try {
        RepositoryUtil.getDocumentNodeStore().getVersionGarbageCollector().gc(
            0,
            TimeUnit.DAYS);
    } catch (final IOException ioe) {
        log.error("Error while running Version Garbage Collection : {}", ioe);
    }

    log.info("Garbage collection execution completed");
}

请让我知道如何运行版本垃圾回收正确删除节点在jackrabbit橡树。
下面是为版本垃圾收集创建存储库和获取文档节点存储对象的代码

private static Repository createRepo(final Map<String, String> dbDetails)
                                                                          throws DataStoreException {
    try {
        final RDBOptions options =
            new RDBOptions().tablePrefix(dbDetails.get(DB_TABLE_PREFIX)).dropTablesOnClose(
                false);
        final DataSource ds =
            RDBDataSourceFactory.forJdbcUrl(
                dbDetails.get("dbURL"),
                dbDetails.get("dbUser"),
                dbDetails.get("dbPassword"));
        final Properties properties = buildS3Properties(dbDetails);
        final S3DataStore s3DataStore = buildS3DataStore(properties);
        final DataStoreBlobStore dataStoreBlobStore = new DataStoreBlobStore(s3DataStore);
        final Whiteboard wb = new DefaultWhiteboard();

        bapRegistration =
            wb.register(
                BlobAccessProvider.class,
                (BlobAccessProvider) dataStoreBlobStore,
                properties);

        *documentNodeStore =*
            new RDBDocumentNodeStoreBuilder()
                .setBlobStore(dataStoreBlobStore)
                .setBundlingDisabled(true)
                .setRDBConnection(ds, options)
                .build();

        repository = new Jcr(documentNodeStore).with(wb).createRepository();
        return repository;
    } catch (final DataStoreException e) {
        log.error("S3 Connection could not be created." + e);
        throw new DataStoreException("S3 Connection could not be created");
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题