/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private Node rebindSplitFrames(Split split) { final Node sibling = split.latchSiblingEx(); try { for (CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private Node rebindSplitFrames(Split split) { final Node sibling = split.latchSiblingEx(); try { for (CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private Node rebindSplitFrames(Split split) { final Node sibling = split.latchSiblingEx(); try { for (CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { CursorFrame.popAll(this);
Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { node.releaseExclusive();
Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { CursorFrame.popAll(frame);