Sven Wagner
Sven Wagner

Reputation: 1

org.artifactory.storage.StorageException: Failed to update the unique indices table

we are running Artifactory 7.5.5 on premise and getting this error when doing a scheduled daily task (npm install) in our CI.

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

These lines shows that is something to do with a request to the npm repository.

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)

At the end it says this: org.artifactory.storage.StorageException - Failed to update the unique indices table, caused by org.postgresql.util.PSQLException: FATAL: sorry, too many clients already.

The CI job then exits with

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

Can someone help?

Upvotes: 0

Views: 1316

Answers (1)

Ariel Kabov
Ariel Kabov

Reputation: 866

This error indicates that the PostgreSQL DB has run out of DB connections. I suggest you to increase the DB connections allowed on the DB side based on the formula available here.

Upvotes: 3

Related Questions