diff --git a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java index 439904eb..8c075d7e 100644 --- a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java +++ b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java @@ -1092,25 +1092,4 @@ public class AdminResource { return info; } - - @GET - @Path("/dbstates") - @Operation( - summary = "Get DB States", - description = "Get DB States", - responses = { - @ApiResponse( - content = @Content(mediaType = MediaType.APPLICATION_JSON, array = @ArraySchema(schema = @Schema(implementation = DbConnectionInfo.class))) - ) - } - ) - public List getDbConnectionsStates() { - - try { - return Controller.REPOSITORY_FACTORY.getDbConnectionsStates(); - } catch (Exception e) { - LOGGER.error(e.getMessage(), e); - return new ArrayList<>(0); - } - } } \ No newline at end of file diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index 33c49bde..826395ac 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -73,8 +73,6 @@ import java.util.stream.Collectors; public class Controller extends Thread { - public static HSQLDBRepositoryFactory REPOSITORY_FACTORY; - static { // This must go before any calls to LogManager/Logger System.setProperty("log4j2.formatMsgNoLookups", "true"); @@ -405,8 +403,8 @@ public class Controller extends Thread { LOGGER.info("Starting repository"); try { - REPOSITORY_FACTORY = new HSQLDBRepositoryFactory(getRepositoryUrl()); - RepositoryManager.setRepositoryFactory(REPOSITORY_FACTORY); + HSQLDBRepositoryFactory repositoryFactory = new HSQLDBRepositoryFactory(getRepositoryUrl()); + RepositoryManager.setRepositoryFactory(repositoryFactory); RepositoryManager.setRequestedCheckpoint(Boolean.TRUE); try (final Repository repository = RepositoryManager.getRepository()) { diff --git a/src/main/java/org/qortal/repository/Repository.java b/src/main/java/org/qortal/repository/Repository.java index c0bdb0d9..a361ee95 100644 --- a/src/main/java/org/qortal/repository/Repository.java +++ b/src/main/java/org/qortal/repository/Repository.java @@ -1,6 +1,7 @@ package org.qortal.repository; import java.io.IOException; +import java.sql.Connection; import java.util.concurrent.TimeoutException; public interface Repository extends AutoCloseable { @@ -62,4 +63,5 @@ public interface Repository extends AutoCloseable { public static void attemptRecovery(String connectionUrl, String name) throws DataException {} + public Connection getConnection(); } diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBCacheUtils.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBCacheUtils.java index 46cd7cab..bee629b8 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBCacheUtils.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBCacheUtils.java @@ -468,7 +468,7 @@ public class HSQLDBCacheUtils { Thread.currentThread().setName(DB_CACHE_TIMER_TASK); - try (final HSQLDBRepository respository = (HSQLDBRepository) Controller.REPOSITORY_FACTORY.getRepository()) { + try (final Repository respository = RepositoryManager.getRepository()) { fillCache(ArbitraryResourceCache.getInstance(), respository); } catch( DataException e ) { @@ -611,7 +611,7 @@ public class HSQLDBCacheUtils { private static int recordCurrentBalances(ConcurrentHashMap> balancesByHeight) { int currentHeight; - try (final HSQLDBRepository repository = (HSQLDBRepository) Controller.REPOSITORY_FACTORY.getRepository()) { + try (final Repository repository = RepositoryManager.getRepository()) { // get current balances List accountBalances = getAccountBalances(repository); @@ -675,7 +675,7 @@ public class HSQLDBCacheUtils { * @param cache the cache to fill * @param repository the data source to fill the cache with */ - public static void fillCache(ArbitraryResourceCache cache, HSQLDBRepository repository) { + public static void fillCache(ArbitraryResourceCache cache, Repository repository) { try { // ensure all data is committed in, before we query it @@ -713,7 +713,7 @@ public class HSQLDBCacheUtils { * * @throws SQLException */ - private static void fillNamepMap(ConcurrentHashMap levelByName, HSQLDBRepository repository ) throws SQLException { + private static void fillNamepMap(ConcurrentHashMap levelByName, Repository repository ) throws SQLException { StringBuilder sql = new StringBuilder(512); @@ -721,7 +721,7 @@ public class HSQLDBCacheUtils { sql.append("FROM NAMES "); sql.append("INNER JOIN ACCOUNTS on owner = account "); - Statement statement = repository.connection.createStatement(); + Statement statement = repository.getConnection().createStatement(); ResultSet resultSet = statement.executeQuery(sql.toString()); @@ -744,7 +744,7 @@ public class HSQLDBCacheUtils { * @return the resources * @throws SQLException */ - private static List getResources( HSQLDBRepository repository) throws SQLException { + private static List getResources( Repository repository) throws SQLException { List resources = new ArrayList<>(); @@ -756,7 +756,7 @@ public class HSQLDBCacheUtils { sql.append("LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) WHERE name IS NOT NULL"); List arbitraryResources = new ArrayList<>(); - Statement statement = repository.connection.createStatement(); + Statement statement = repository.getConnection().createStatement(); ResultSet resultSet = statement.executeQuery(sql.toString()); @@ -822,7 +822,7 @@ public class HSQLDBCacheUtils { return resources; } - public static List getAccountBalances(HSQLDBRepository repository) { + public static List getAccountBalances(Repository repository) { StringBuilder sql = new StringBuilder(); @@ -836,7 +836,7 @@ public class HSQLDBCacheUtils { LOGGER.info( "Getting account balances ..."); try { - Statement statement = repository.connection.createStatement(); + Statement statement = repository.getConnection().createStatement(); ResultSet resultSet = statement.executeQuery(sql.toString()); diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java index 4a41ed68..2bf88657 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java @@ -174,6 +174,11 @@ public class HSQLDBRepository implements Repository { // Transaction COMMIT / ROLLBACK / savepoints + @Override + public Connection getConnection() { + return this.connection; + } + @Override public void saveChanges() throws DataException { long beforeQuery = this.slowQueryThreshold == null ? 0 : System.currentTimeMillis();