Introduction
From Artifactory 7.90.x onwards, Access will have a dedicated JVM. This change affects users using Derby as their database and has added specific Derby database configuration lines under the access section in system.yaml.
For these Derby users, this can cause an error in the Access service, preventing Artifactory from starting up.
The error message typically reads:
SQL State : XSDB6 Error Code : 45000 Message : Another instance of Derby may have already booted the database /var/opt/jfrog/artifactory/data/artifactory/derby.
This issue occurs because Access now has a separate JVM, and the database path in the system.yaml file is pointing to Artifactory's Derby database instead of Access's dedicated database.
Resolution
To resolve this issue, you have two options:
1. Change the database path in system.yaml:
Update the “url” line under the “access” section in system.yaml to point to the correct Access database path:
access: database: type: derby driver: org.apache.derby.jdbc.EmbeddedDriver url: jdbc:derby:/opt/jfrog/artifactory/var/data/access/derby;create=true
2. Remove the custom database configuration:
Alternatively, you can remove these lines entirely from system.yaml. This will allow Access to use its default settings.
access:
database:type: derbydriver: org.apache.derby.jdbc.EmbeddedDriverurl: jdbc:derby:/opt/jfrog/artifactory/var/data/access/derby;create=true
After making either of these changes, restart Artifactory for the changes to take effect.
Conclusion
This issue affects Artifactory versions 7.90.x and later due to the introduction of a dedicated JVM for Access. By either updating the database path or removing the custom configuration in system.yaml, you can resolve the "Another instance of Derby may have already booted the database" error and successfully start Artifactory.
For more information on Access's dedicated JVM, refer to the JFrog documentation. Always remember to backup your system.yaml file before making any changes.