mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Compare commits
1 Commits
feature-fl
...
545-log-db
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63ae199be3 |
@@ -1,5 +1,32 @@
|
|||||||
package org.briarproject.bramble.db;
|
package org.briarproject.bramble.db;
|
||||||
|
|
||||||
|
import static org.briarproject.bramble.api.db.DatabaseComponent.NO_CLEANUP_DEADLINE;
|
||||||
|
import static org.briarproject.bramble.api.db.DatabaseComponent.TIMER_NOT_STARTED;
|
||||||
|
import static org.briarproject.bramble.api.db.Metadata.REMOVE;
|
||||||
|
import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
|
||||||
|
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
|
||||||
|
import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
|
||||||
|
import static org.briarproject.bramble.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH;
|
||||||
|
import static org.briarproject.bramble.api.sync.validation.MessageState.DELIVERED;
|
||||||
|
import static org.briarproject.bramble.api.sync.validation.MessageState.PENDING;
|
||||||
|
import static org.briarproject.bramble.api.sync.validation.MessageState.UNKNOWN;
|
||||||
|
import static org.briarproject.bramble.db.DatabaseConstants.DB_SETTINGS_NAMESPACE;
|
||||||
|
import static org.briarproject.bramble.db.DatabaseConstants.DIRTY_KEY;
|
||||||
|
import static org.briarproject.bramble.db.DatabaseConstants.SCHEMA_VERSION_KEY;
|
||||||
|
import static org.briarproject.bramble.db.ExponentialBackoff.calculateExpiry;
|
||||||
|
import static org.briarproject.bramble.db.JdbcUtils.tryToClose;
|
||||||
|
import static org.briarproject.bramble.util.LogUtils.logDuration;
|
||||||
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
|
import static org.briarproject.bramble.util.LogUtils.now;
|
||||||
|
import static java.sql.Types.BINARY;
|
||||||
|
import static java.sql.Types.BOOLEAN;
|
||||||
|
import static java.sql.Types.INTEGER;
|
||||||
|
import static java.sql.Types.VARCHAR;
|
||||||
|
import static java.util.Arrays.asList;
|
||||||
|
import static java.util.logging.Level.INFO;
|
||||||
|
import static java.util.logging.Level.WARNING;
|
||||||
|
import static java.util.logging.Logger.getLogger;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.contact.Contact;
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.contact.PendingContact;
|
import org.briarproject.bramble.api.contact.PendingContact;
|
||||||
@@ -65,33 +92,6 @@ import java.util.logging.Logger;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.concurrent.GuardedBy;
|
import javax.annotation.concurrent.GuardedBy;
|
||||||
|
|
||||||
import static java.sql.Types.BINARY;
|
|
||||||
import static java.sql.Types.BOOLEAN;
|
|
||||||
import static java.sql.Types.INTEGER;
|
|
||||||
import static java.sql.Types.VARCHAR;
|
|
||||||
import static java.util.Arrays.asList;
|
|
||||||
import static java.util.logging.Level.INFO;
|
|
||||||
import static java.util.logging.Level.WARNING;
|
|
||||||
import static java.util.logging.Logger.getLogger;
|
|
||||||
import static org.briarproject.bramble.api.db.DatabaseComponent.NO_CLEANUP_DEADLINE;
|
|
||||||
import static org.briarproject.bramble.api.db.DatabaseComponent.TIMER_NOT_STARTED;
|
|
||||||
import static org.briarproject.bramble.api.db.Metadata.REMOVE;
|
|
||||||
import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
|
|
||||||
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
|
|
||||||
import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
|
|
||||||
import static org.briarproject.bramble.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH;
|
|
||||||
import static org.briarproject.bramble.api.sync.validation.MessageState.DELIVERED;
|
|
||||||
import static org.briarproject.bramble.api.sync.validation.MessageState.PENDING;
|
|
||||||
import static org.briarproject.bramble.api.sync.validation.MessageState.UNKNOWN;
|
|
||||||
import static org.briarproject.bramble.db.DatabaseConstants.DB_SETTINGS_NAMESPACE;
|
|
||||||
import static org.briarproject.bramble.db.DatabaseConstants.DIRTY_KEY;
|
|
||||||
import static org.briarproject.bramble.db.DatabaseConstants.SCHEMA_VERSION_KEY;
|
|
||||||
import static org.briarproject.bramble.db.ExponentialBackoff.calculateExpiry;
|
|
||||||
import static org.briarproject.bramble.db.JdbcUtils.tryToClose;
|
|
||||||
import static org.briarproject.bramble.util.LogUtils.logDuration;
|
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
|
||||||
import static org.briarproject.bramble.util.LogUtils.now;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A generic database implementation that can be used with any JDBC-compatible
|
* A generic database implementation that can be used with any JDBC-compatible
|
||||||
* database library.
|
* database library.
|
||||||
@@ -415,6 +415,7 @@ abstract class JdbcDatabase implements Database<Connection> {
|
|||||||
}
|
}
|
||||||
createIndexes(txn);
|
createIndexes(txn);
|
||||||
setDirty(txn, true);
|
setDirty(txn, true);
|
||||||
|
if (LOG.isLoggable(INFO)) countAndLogRows(txn);
|
||||||
commitTransaction(txn);
|
commitTransaction(txn);
|
||||||
} catch (DbException e) {
|
} catch (DbException e) {
|
||||||
abortTransaction(txn);
|
abortTransaction(txn);
|
||||||
@@ -565,6 +566,40 @@ abstract class JdbcDatabase implements Database<Connection> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void countAndLogRows(Connection txn) throws DbException {
|
||||||
|
Statement s = null;
|
||||||
|
try {
|
||||||
|
s = txn.createStatement();
|
||||||
|
countAndLogRows(s, "settings");
|
||||||
|
countAndLogRows(s, "localAuthors");
|
||||||
|
countAndLogRows(s, "contacts");
|
||||||
|
countAndLogRows(s, "groups");
|
||||||
|
countAndLogRows(s, "groupMetadata");
|
||||||
|
countAndLogRows(s, "groupVisibilities");
|
||||||
|
countAndLogRows(s, "messages");
|
||||||
|
countAndLogRows(s, "messageMetadata");
|
||||||
|
countAndLogRows(s, "messageDependencies");
|
||||||
|
countAndLogRows(s, "offers");
|
||||||
|
countAndLogRows(s, "statuses");
|
||||||
|
countAndLogRows(s, "transports");
|
||||||
|
countAndLogRows(s, "incomingKeys");
|
||||||
|
countAndLogRows(s, "outgoingKeys");
|
||||||
|
s.close();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
tryToClose(s, LOG, WARNING);
|
||||||
|
throw new DbException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void countAndLogRows(Statement s, String tableName)
|
||||||
|
throws SQLException {
|
||||||
|
ResultSet rs = s.executeQuery("SELECT COUNT (*) FROM " + tableName);
|
||||||
|
if (rs.next())
|
||||||
|
LOG.info("Table " + tableName + ": " + rs.getInt(1) + " rows");
|
||||||
|
else LOG.warning("Table " + tableName + " could not be counted");
|
||||||
|
rs.close();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Connection startTransaction() throws DbException {
|
public Connection startTransaction() throws DbException {
|
||||||
Connection txn;
|
Connection txn;
|
||||||
|
|||||||
Reference in New Issue
Block a user