From e66152e812b905fe4ab9580b386de729ee539386 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 1 Mar 2022 12:28:09 +0000 Subject: [PATCH] Compact the DB at shutdown, and at startup if not closed cleanly. --- .../main/java/org/briarproject/bramble/db/H2Database.java | 7 ++++++- .../java/org/briarproject/bramble/db/HyperSqlDatabase.java | 6 +++--- .../java/org/briarproject/bramble/db/JdbcDatabase.java | 4 +++- briar-android/src/main/res/layout/fragment_sign_out.xml | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java index ce4433005..7fad1c3fd 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java @@ -85,12 +85,17 @@ class H2Database extends JdbcDatabase { public void close() throws DbException { // H2 will close the database when the last connection closes Connection c = null; + Statement s = null; try { c = createConnection(); - super.closeAllConnections(); + closeAllConnections(); setDirty(c, false); + s = c.createStatement(); + s.execute("SHUTDOWN COMPACT"); + s.close(); c.close(); } catch (SQLException e) { + tryToClose(s, LOG, WARNING); tryToClose(c, LOG, WARNING); throw new DbException(e); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java index bdc985ed0..64dd03e04 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java @@ -79,11 +79,11 @@ class HyperSqlDatabase extends JdbcDatabase { Connection c = null; Statement s = null; try { - super.closeAllConnections(); + closeAllConnections(); c = createConnection(); setDirty(c, false); s = c.createStatement(); - s.executeQuery("SHUTDOWN"); + s.executeQuery("SHUTDOWN COMPACT"); s.close(); c.close(); } catch (SQLException e) { @@ -106,7 +106,7 @@ class HyperSqlDatabase extends JdbcDatabase { Connection c = null; Statement s = null; try { - super.closeAllConnections(); + closeAllConnections(); c = createConnection(); s = c.createStatement(); s.executeQuery("SHUTDOWN COMPACT"); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java index 923d15b15..5ff63dda3 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java @@ -405,7 +405,9 @@ abstract class JdbcDatabase implements Database { if (reopen) { Settings s = getSettings(txn, DB_SETTINGS_NAMESPACE); wasDirtyOnInitialisation = isDirty(s); - compact = migrateSchema(txn, s, listener) || isCompactionDue(s); + boolean migrated = migrateSchema(txn, s, listener); + compact = wasDirtyOnInitialisation || migrated + || isCompactionDue(s); } else { wasDirtyOnInitialisation = false; createTables(txn); diff --git a/briar-android/src/main/res/layout/fragment_sign_out.xml b/briar-android/src/main/res/layout/fragment_sign_out.xml index c701bf28c..b5665a5e2 100644 --- a/briar-android/src/main/res/layout/fragment_sign_out.xml +++ b/briar-android/src/main/res/layout/fragment_sign_out.xml @@ -17,7 +17,7 @@ app:layout_constraintVertical_bias="0.5" app:layout_constraintVertical_chainStyle="packed" app:srcCompat="@drawable/startup_lock" - app:tint="@color/briar_primary" + app:tint="@color/briar_accent" tools:ignore="ContentDescription" />