txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse(te -> { long scrambledTxnId = mix(te.key); _LocalTransaction txn = te.value; mIndexes = new LHashTable.Obj<>(16); cursorTable = new CursorTable(4); } else { cursorTable = new CursorTable(cursors.size()); cursors.traverse(ce -> { long scrambledCursorId = mix(ce.key); cursorTable.insert(scrambledCursorId).mCursor = ce.value;
private void cleanupUnreferencedTree(_TreeRef ref) throws IOException { _Node root = ref.mRoot; root.acquireShared(); try { mOpenTreesLatch.acquireExclusive(); try { LHashTable.ObjEntry<_TreeRef> entry = mOpenTreesById.get(ref.mId); if (entry == null || entry.value != ref) { return; } if (ref.mName != null) { mOpenTrees.remove(ref.mName); } mOpenTreesById.remove(ref.mId); root.makeEvictableNow(); if (root.mId != 0) { nodeMapPut(root); } } finally { mOpenTreesLatch.releaseExclusive(); } } finally { root.releaseShared(); } }
void treeClosed(Tree tree) { mOpenTreesLatch.acquireExclusive(); try { TreeRef ref = mOpenTreesById.getValue(tree.mId); if (ref != null && ref.get() == tree) { ref.clear(); if (tree.mName != null) { mOpenTrees.remove(tree.mName); } mOpenTreesById.remove(tree.mId); } } finally { mOpenTreesLatch.releaseExclusive(); } }
txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse(te -> { long scrambledTxnId = mix(te.key); LocalTransaction txn = te.value; mIndexes = new LHashTable.Obj<>(16); cursorTable = new CursorTable(4); } else { cursorTable = new CursorTable(cursors.size()); cursors.traverse(ce -> { long scrambledCursorId = mix(ce.key); cursorTable.insert(scrambledCursorId).mCursor = ce.value;
mIndexes = new LHashTable.Obj<>(16); txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse((entry) -> {
mIndexes = new LHashTable.Obj<>(16); txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse((entry) -> {
remaining = null; } else { remaining = new LHashTable.Obj<>(16); if (remaining == null || remaining.size() == 0) { return null; remaining.traverse(entry -> { mTransactions.insert(entry.key).mTxn = entry.value; return false;
remaining = null; } else { remaining = new LHashTable.Obj<>(16); if (remaining == null || remaining.size() == 0) { return null; remaining.traverse(entry -> { mTransactions.insert(entry.key).mTxn = entry.value; return false;
txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse(te -> { long scrambledTxnId = mix(te.key); LocalTransaction txn = te.value; mIndexes = new LHashTable.Obj<>(16);
txnTable = new TxnTable(16); } else { txnTable = new TxnTable(txns.size()); txns.traverse(te -> { long scrambledTxnId = mix(te.key); _LocalTransaction txn = te.value; mIndexes = new LHashTable.Obj<>(16);
mOpenTreesLatch.acquireExclusive(); try { _TreeRef ref = mOpenTreesById.removeValue(tree.mId); if (ref == null || ref.get() != tree) {
mOpenTreesLatch.acquireExclusive(); try { TreeRef ref = mOpenTreesById.removeValue(tree.mId); if (ref == null || ref.get() != tree) {
/** * To be called only when shouldInvokeRecoveryHandler returns true. * * @param redo non-null RedoWriter assigned to each transaction */ void invokeRecoveryHandler(LHashTable.Obj<LocalTransaction> txns, RedoWriter redo) { RecoveryHandler handler = mRecoveryHandler; txns.traverse(entry -> { LocalTransaction txn = entry.value; txn.recoverPrepared (redo, mDurabilityMode, LockMode.UPGRADABLE_READ, mDefaultLockTimeoutNanos); try { handler.recover(txn); } catch (Throwable e) { if (!isClosed()) { EventListener listener = mEventListener; if (listener == null) { uncaught(e); } else { listener.notify(EventType.RECOVERY_HANDLER_UNCAUGHT, "Uncaught exception from recovery handler: %1$s", e); } } } return true; }); }
/** * To be called only when shouldInvokeRecoveryHandler returns true. * * @param redo non-null _RedoWriter assigned to each transaction */ void invokeRecoveryHandler(LHashTable.Obj<_LocalTransaction> txns, _RedoWriter redo) { RecoveryHandler handler = mRecoveryHandler; txns.traverse(entry -> { _LocalTransaction txn = entry.value; txn.recoverPrepared (redo, mDurabilityMode, LockMode.UPGRADABLE_READ, mDefaultLockTimeoutNanos); try { handler.recover(txn); } catch (Throwable e) { if (!isClosed()) { EventListener listener = mEventListener; if (listener == null) { uncaught(e); } else { listener.notify(EventType.RECOVERY_HANDLER_UNCAUGHT, "Uncaught exception from recovery handler: %1$s", e); } } } return true; }); }