TransportKeyManager creates duplicates when rotating keys
Got this stacktrace on the Sony Xperia Tipo (Android 4.0.4) when relaunching Briar after installing it yesterday:
12-18 10:57:16.936 22408-23493/org.briarproject W/TransportKeyManager: org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:919)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:3163)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:65)
at org.briarproject.db.DatabaseComponentImpl.updateTransportKeys(DatabaseComponentImpl.java:1461)
at org.briarproject.transport.TransportKeyManager$1.run(TransportKeyManager.java:127)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'tor', 16781, 13)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(Unknown Source)
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:896)
... 7 more
12-18 10:57:17.166 22408-23493/org.briarproject W/TransportKeyManager: org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
org.briarproject.api.db.DbException: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:919)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:3163)
at org.briarproject.db.JdbcDatabase.updateTransportKeys(JdbcDatabase.java:65)
at org.briarproject.db.DatabaseComponentImpl.updateTransportKeys(DatabaseComponentImpl.java:1461)
at org.briarproject.transport.TransportKeyManager$1.run(TransportKeyManager.java:127)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PRIMARY_KEY_1D ON PUBLIC.INCOMINGKEYS(CONTACTID, TRANSPORTID, PERIOD) VALUES (2, 'bt', 16781, 16)"; SQL statement:
INSERT INTO incomingKeys (contactId, transportId, period, tagKey, headerKey, base, bitmap) VALUES (?, ?, ?, ?, ?, ?, ?) [23505-190]
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(Unknown Source)
at org.briarproject.db.JdbcDatabase.addTransportKeys(JdbcDatabase.java:896)
... 7 more