ARTIFACTORY: Errors when a wrong service account is used to start Artifactory

AuthorFullName__c
Daniel Augustine
articleNumber
000005428
FirstPublishedDate
2022-10-13T06:45:50Z
lastModifiedDate
2025-05-15

ARTIFACTORY: Errors when a wrong service account is used to start Artifactory

Description

You may see the below errors during Artifactory startup.

On the command line:

Starting router...
PID exists (11320), but router not running. Proceed to start it up.
/opt/jfrog/artifactory/app/bin/../router/bin/router.sh: line 222: /opt/jfrog/artifactory/app/run/router.pid: Permission denied


In artifactory-service.log:
 

[jfrt ] [ERROR] [3afa256f55a25e5 ] [c.z.h.p.HikariPool:497        ] [Catalina-utility-1  ] - HikariCP Main - Error thrown while acquiring connection from data source
java.sql.SQLException: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedConnection.setReadOnly(Unknown Source)
        at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:403)
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:363)
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
        at org.jfrog.storage.wrapper.JFrogDataSourceWrapper.getConnection(JFrogDataSourceWrapper.java:102)
        at org.jfrog.storage.wrapper.JFrogDataSourceWrapper.invoke(JFrogDataSourceWrapper.java:71)
        at com.sun.proxy.$Proxy9.getConnection(Unknown Source)
        at org.jfrog.storage.util.DbUtils.withMetadata(DbUtils.java:717)
        at org.jfrog.storage.util.DbUtils.tableExists(DbUtils.java:273)
        at org.artifactory.common.config.db.DbVersionDao.isDbPropertiesTableExists(DbVersionDao.java:62)
        at org.artifactory.converter.VersionProviderImpl.tryToResolveFromDb(VersionProviderImpl.java:202)
        at org.artifactory.converter.VersionProviderImpl.getCompoundVersionDetailsFromDbIfExists(VersionProviderImpl.java:127)
        at org.artifactory.converter.VersionProviderImpl.loadOriginalDbVersion(VersionProviderImpl.java:148)
        at org.artifactory.converter.VersionProviderImpl.init(VersionProviderImpl.java:109)
        at org.artifactory.lifecycle.webapp.servlet.BasicConfigurationManager.initVersion(BasicConfigurationManager.java:160)
        at org.artifactory.lifecycle.webapp.servlet.BasicConfigurationManager.initArtifactoryInstallation(BasicConfigurationManager.java:139)
        at org.artifactory.lifecycle.webapp.servlet.BasicConfigurationManager.initialize(BasicConfigurationManager.java:126)
        at org.artifactory.lifecycle.webapp.servlet.ArtifactoryHomeConfigListener.initBasicConfigManager(ArtifactoryHomeConfigListener.java:61)
        at org.artifactory.lifecycle.webapp.servlet.ArtifactoryHomeConfigListener.contextInitialized(ArtifactoryHomeConfigListener.java:53)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:690)
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1889)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.derby.iapi.error.StandardException: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.impl.sql.conn.GenericAuthorizer.setReadOnlyConnection(Unknown Source)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.setReadOnly(Unknown Source)
        ... 38 common frames omitted
Resolution 

This can occur when a non-designated service account is used to start Artifactory. For example, if the root account was used at some point and now the service account is being used again.

1
The pid (Process ID) files will be owned by root. Change to directory referenced in the error above, and delete the pid files located in that directory.

Listing of: /opt/jfrog/artifactory/app/run
[root@centos7 run]# ls -l
total 32
-rw-r-----. 1 root root 6 Jul  6 08:10 artifactory.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 event.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 frontend.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 integration.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 jfconnect.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 metadata.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 observability.pid
-rw-r--r--. 1 root root 5 Jul  6 08:10 router.pid



2
The SQL exception in the log file is a result of db.lck being owned by wrong user. db.lck is an access control file used to "lock" a database or other file from being opened or changed by more than one user at a time

Locate the file in a directory similar to: /opt/jfrog/artifactory/var/data/artifactory/derby

-rw-r-----. 1 root  root    38 Jul  6 08:10 db.lck


And delete it.

  • Restart Artifactory using the designated account such as artifactory.