【问题标题】:org.artifactory.storage.StorageException: Failed to update the unique indices tableorg.artifactory.storage.StorageException:无法更新唯一索引表
【发布时间】:2020-12-10 14:07:12
【问题描述】:

我们在本地运行 Artifactory 7.5.5,在我们的 CI 中执行计划的每日任务 (npm install) 时收到此错误。

2020-08-21T04:22:16.758Z [jfrt ] [ERROR] [e7728af2916e37c4] [c.e.m.GlobalExceptionMapper:48] [-nio-8081-exec-58377] - Failed to update the unique indices table
org.artifactory.storage.StorageException: Failed to update the unique indices table
    at org.artifactory.storage.db.util.SimpleIdGenerator.simpleUpdateIndex(SimpleIdGenerator.java:105)
    at org.artifactory.storage.db.util.SimpleIdGenerator.getGoodValue(SimpleIdGenerator.java:69)
    at org.artifactory.storage.db.util.SimpleIdGenerator.nextId(SimpleIdGenerator.java:61)
    at org.artifactory.storage.db.util.SimpleIdGenerator$$FastClassBySpringCGLIB$$d360a883.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685)
    at org.artifactory.storage.db.util.SimpleIdGenerator$$EnhancerBySpringCGLIB$$ca10fb90.nextId(<generated>)
    at org.artifactory.storage.db.DbServiceImpl.nextId(DbServiceImpl.java:131)
    at jdk.internal.reflect.GeneratedMethodAccessor543.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205)
    at com.sun.proxy.$Proxy201.nextId(Unknown Source)
    at org.artifactory.storage.db.event.service.EventsServiceImpl.appendEvents(EventsServiceImpl.java:81)
    at org.artifactory.storage.db.event.service.EventsSessionResource.beforeCommit(EventsSessionResource.java:64)
    at org.artifactory.storage.tx.SessionResourceManagerImpl.beforeCommit(SessionResourceManagerImpl.java:57)
    at org.artifactory.storage.db.fs.session.SqlStorageSession.beforeCommit(SqlStorageSession.java:133)
    at org.artifactory.storage.db.spring.SessionSynchronization.beforeCommit(SessionSynchronization.java:85)
    at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:96)

[...]

Caused by: org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:443)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:217)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:216)
    at org.postgresql.Driver.makeConnection(Driver.java:404)
    at org.postgresql.Driver.connect(Driver.java:272)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:739)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:671)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:198)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:132)
    at org.artifactory.storage.db.util.SimpleIdGenerator.simpleUpdateIndex(SimpleIdGenerator.java:86)
    ... 123 common frames omitted

这些行表明这与对 npm 存储库的请求有关。

at org.artifactory.addon.npm.repo.NpmRemoteRepoHandler.call(NpmRemoteRepoHandler.java:465)
    at org.artifactory.addon.npm.repo.NpmRemoteRepoHandler.getPackageMetadata(NpmRemoteRepoHandler.java:145)
    at org.artifactory.addon.npm.repo.merge.NpmPackageMetadataMerger.merge(NpmPackageMetadataMerger.java:92)
    at org.artifactory.addon.npm.repo.merge.NpmMetadataMerger.getMergedResult(NpmMetadataMerger.java:67)
    at org.artifactory.addon.npm.repo.NpmVirtualRepoHandler.getPackageMetadata(NpmVirtualRepoHandler.java:70)

最后是这样写的:org.artifactory.storage.StorageException - Failed to update the unique indices table,由org.postgresql.util.PSQLException: FATAL: sorry, too many clients already引起。

CI 作业然后退出

npm ERR! 500 Internal Server Error - GET https://artifactory.company.com/artifactory/api/npm/npm/some-package-name

有人可以帮忙吗?

【问题讨论】:

    标签: artifactory


    【解决方案1】:

    此错误表明 PostgreSQL 数据库已用完数据库连接。 建议您根据here可用的公式增加DB端允许的DB连接数。

    【讨论】:

    • 嗨,爱丽儿,感谢您的帮助。你的意思是这个设置并将300设置得更高吗? yml artifactory: database: maxOpenConnections: 300 还是 accessmeta 设置?
    • @SvenWagner 不。这些配置 Artifactory 可以打开多少个连接。您应该在数据库端修改它可以接受的连接数。可能会有所帮助:stackoverflow.com/questions/2757549/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多