public void removeOwner(short node) {
final boolean trace = LOG.isTraceEnabled();
final Transaction txn = null;
// final Transaction txn = env.beginTransaction(null, TransactionConfig.DEFAULT);
// try {
TLongArrayList lines = new TLongArrayList();
final DatabaseEntry sKey = new DatabaseEntry(Shorts.toByteArray(node));
final DatabaseEntry pKey = new DatabaseEntry();
final DatabaseEntry data = new DatabaseEntry();
try (SecondaryCursor cursor = ownerIndex.openCursor(txn, null)) {
OperationStatus retVal = cursor.getSearchKey(sKey, pKey, data, LockMode.DEFAULT);
while (retVal == OperationStatus.SUCCESS) {
final long id = Longs.fromByteArray(pKey.getData());
if (trace)
LOG.trace("Owner of {}: {} -> 0", id, node);
lines.add(id); // cursor.getPrimaryDatabase().put(null, pKey, SERVER); - causes deadlock
retVal = cursor.getNextDup(sKey, pKey, data, LockMode.DEFAULT);
}
}
byte[] longArray = new byte[8];
for (TLongIterator it = lines.iterator(); it.hasNext();) {
toByteArray(it.next(), longArray);
pKey.setData(longArray);
ownerDirectory.put(null, pKey, SERVER);
}
// txn.commit();