Browse Source

Handle missing case in names integrity check caused by an UPDATE_NAME transaction with a blank "newName" value.

This is a valid transaction but not one that the integrity check was handling properly. Should fix NullPointerException on node startup.
mempow-testing
CalDescent 3 years ago
parent
commit
d16663f0a9
  1. 7
      src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java

7
src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java

@ -187,7 +187,12 @@ public class NamesDatabaseIntegrityCheck {
// The old name will then be unregistered, or re-registered.
// FUTURE: check database integrity for names that have been updated and then the original name re-registered
else if (Objects.equals(updateNameTransactionData.getName(), registeredName)) {
NameData newNameData = repository.getNameRepository().fromName(updateNameTransactionData.getNewName());
String newName = updateNameTransactionData.getNewName();
if (newName == null || newName.length() == 0) {
// If new name is blank (or maybe null, just to be safe), it means that it stayed the same
newName = registeredName;
}
NameData newNameData = repository.getNameRepository().fromName(newName);
if (!Objects.equals(creator.getAddress(), newNameData.getOwner())) {
LOGGER.info("Error: registered name {} is owned by {}, but it should be {}",
updateNameTransactionData.getNewName(), newNameData.getOwner(), creator.getAddress());

Loading…
Cancel
Save