Update `AccountsManager` mismatch comparison
This commit is contained in:
parent
2e28fb97a4
commit
a398e2269c
|
@ -665,11 +665,6 @@ public class AccountsManager {
|
||||||
dynamoAccount.getMasterDevice().get().getSignedPreKey())) {
|
dynamoAccount.getMasterDevice().get().getSignedPreKey())) {
|
||||||
return Optional.of("masterDeviceSignedPreKey");
|
return Optional.of("masterDeviceSignedPreKey");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Objects.equals(databaseAccount.getMasterDevice().get().getPushTimestamp(),
|
|
||||||
dynamoAccount.getMasterDevice().get().getPushTimestamp())) {
|
|
||||||
return Optional.of("masterDevicePushTimestamp");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -681,6 +676,15 @@ public class AccountsManager {
|
||||||
return Optional.of("version");
|
return Optional.of("version");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (databaseAccount.getMasterDevice().isPresent() && dynamoAccount.getMasterDevice().isPresent()) {
|
||||||
|
if (Math.abs(databaseAccount.getMasterDevice().get().getPushTimestamp() -
|
||||||
|
dynamoAccount.getMasterDevice().get().getPushTimestamp()) > 60 * 1_000L) {
|
||||||
|
// These are generally few milliseconds off, because the setter uses System.currentTimeMillis() internally,
|
||||||
|
// but we can be more relaxed
|
||||||
|
return Optional.of("masterDevicePushTimestamp");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!serializedEquals(databaseAccount, dynamoAccount)) {
|
if (!serializedEquals(databaseAccount, dynamoAccount)) {
|
||||||
return Optional.of("serialization");
|
return Optional.of("serialization");
|
||||||
}
|
}
|
||||||
|
@ -756,6 +760,9 @@ public class AccountsManager {
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
private long lastSeen;
|
private long lastSeen;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
private long pushTimestamp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
|
private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
|
||||||
|
|
|
@ -513,7 +513,7 @@ class AccountsManagerTest {
|
||||||
Thread.sleep(5);
|
Thread.sleep(5);
|
||||||
device2.setApnId("123");
|
device2.setApnId("123");
|
||||||
|
|
||||||
assertEquals(Optional.of("masterDevicePushTimestamp"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
a1.removeDevice(1L);
|
a1.removeDevice(1L);
|
||||||
a2.removeDevice(1L);
|
a2.removeDevice(1L);
|
||||||
|
|
Loading…
Reference in New Issue