private boolean isRootFinished(Procedure<?> proc) { Procedure<?> rootProc = procedures.get(proc.getRootProcId()); return rootProc == null || rootProc.isFinished(); }
@Override public boolean hasLockAccess(Procedure<?> proc) { if (exclusiveLockOwnerProcedure == null) { return false; } long lockOwnerId = exclusiveLockOwnerProcedure.getProcId(); if (proc.getProcId() == lockOwnerId) { return true; } if (!proc.hasParent()) { return false; } // fast path to check root procedure if (proc.getRootProcId() == lockOwnerId) { return true; } // check ancestors for (Procedure<?> p = proc;;) { if (p.getParentProcId() == lockOwnerId) { return true; } p = procedureRetriever.apply(p.getParentProcId()); if (p == null || !p.hasParent()) { return false; } } }
private boolean isRootFinished(Procedure<?> proc) { Procedure<?> rootProc = procedures.get(proc.getRootProcId()); return rootProc == null || rootProc.isFinished(); }
@Override public boolean hasParentLock(final Procedure proc) { return proc.hasParent() && (isLockOwner(proc.getParentProcId()) || isLockOwner(proc.getRootProcId())); }
@Override public boolean hasLockAccess(Procedure<?> proc) { if (exclusiveLockOwnerProcedure == null) { return false; } long lockOwnerId = exclusiveLockOwnerProcedure.getProcId(); if (proc.getProcId() == lockOwnerId) { return true; } if (!proc.hasParent()) { return false; } // fast path to check root procedure if (proc.getRootProcId() == lockOwnerId) { return true; } // check ancestors for (Procedure<?> p = proc;;) { if (p.getParentProcId() == lockOwnerId) { return true; } p = procedureRetriever.apply(p.getParentProcId()); if (p == null || !p.hasParent()) { return false; } } }