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

Java 无法在jcr实现中运行版本垃圾回收,java,postgresql,jackrabbit,jackrabbit-oak,Java,Postgresql,Jackrabbit,Jackrabbit Oak,运行版本垃圾回收时出现以下错误: “超过限制100000个文档,将下一次收集间隔缩短为37561439秒”,“记录器名称”:“org.apache.jackrabbit.oak.plugins.document.versionArbageCollector”,“线程名称”:“http-nio-8080-exec-3”,“级别”:“信息”,“级别值”:20000} 路径为[]的上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌

运行版本垃圾回收时出现以下错误:

“超过限制100000个文档,将下一次收集间隔缩短为37561439秒”,“记录器名称”:“org.apache.jackrabbit.oak.plugins.document.versionArbageCollector”,“线程名称”:“http-nio-8080-exec-3”,“级别”:“信息”,“级别值”:20000} 路径为[]的上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为org.apache.jackrabbit.oak.plugins.document.DocumentStoreException:读取versionGC]时发生异常,其根本原因是“,”logger_name:“org.apache.catalina.core.ContainerBase.[Tomcat].[localhost]./]。“TreCorsServices”:“HTTP-NIO8080-Exe-3”、“Lead”:“StaleOpValue:”:“StaskYouTrar”:“<强> Or.PostgreSQL LUT.PSQLExcEx:不能在事务中间改变事务只读属性。< /强> \r\n\tAtg.PostgreSQL .jdbc .pgCorn.StEdRealOnLead(pgCorn.java:693)\r\n\tat sun.reflect.GeneratedMethodAccessor58.invoke(未知源)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)\r\n\tat org.apache.tomcat.jdbc.pool.jdbceptor.invoke(jdbceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)\r\n\tat org.apache.tomcat.jdbc.pool.interceptor.StatementCache.invoke(StatementCache.java:203)\r\n\tat org.apache.tomcat.jdbc.pool.jdbceptor.invoke(jdbceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:152)\r\n\tat org.apache.tomcat.jdbc.pool.jdbceptor.invoke(jdbceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)\r\n\tat org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:40)\r\n\tat org.apache.tomcat.jdbc.pool.jdbceptor.invoke(jdbceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)\r\n\tat org.apache.tomcat.jdbc.pool.jdbceptor.invoke(jdbceptor.java:108)\r\n\tat org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)\r\n\tat 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\tat org.apache.jackrabbit.oak.plugins.document.VersionArbageCollector$Recommensions.setLongSetting(VersionArbageCollector.java:1200)\r\n\tat org.apache.jackrabbit.oak.plugins.document.VersionArbageCollector$Recommensions.evaluate(VersionArbageCollector.java:1156)\r\n\tat org.apache.jackrabbit.oak.plugins.document.versionArbageCollector$GCJob.gc(versionArbageCollector.java:515)\r\n\tat org.apache.jackrabbit.oak.plugins.document.versionArbageCollector$GCJob.run(versionArbageCollector.java:475)\r\n\tat org.apache.jackrabbage.oak.plugins.document.versionArbageCollector.gc(versionArbageCollector.java:144)\r\n\tat 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\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.procedingjoinpoint(ReflectiveMethodInvocation.java:157)\r\n\tat org.springframework.aop.aspectj.methodinvocationprocedingjoinpoint(MethodInvocationProceedingJoinPoint.java:84)\r\n\t com.springernature.mango.cms.handler.LoggingHandler.logAround(LoggingHandler.java:108)\r\n\t sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)\r\n\t sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)\r\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)\r\n\tat org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)\r\n\tat org.springframework.aop.framework.reflectivemethodinvoking.procement(reflectivemethodinvoking.java:179)\r\n\t org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)\r\n\t org.springframework.aop.framework.ReflectiveMethodInvocation.procept(ReflectiveMethodInvocation.java:179)\r\n\t org.springframework.aop.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.interceptor(CglibAopProxy.java:671)\r\n\t com.springernature.mango.cms.services.rest.service.ServicesController$$EnhancerBySpri
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");
}
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");
    }
}