@Override public void safeRun() { while (true) { Versioned<LedgerMetadata> currentMetadata = getVersionedLedgerMetadata(); Version.Occurred occurred = currentMetadata.getVersion().compare(newMetadata.getVersion()); if (Version.Occurred.BEFORE == occurred) { synchronized (ReadOnlyLedgerHandle.this) { if (setLedgerMetadata(currentMetadata, newMetadata)) { LOG.info("Updated ledger metadata for ledger {} to {}, version {}.", ledgerId, newMetadata.getValue().toSafeString(), newMetadata.getVersion()); break; } } } else { break; } } }