@Override public void getWriteLock(Object resource, Transaction tx) throws DeadlockDetectedException, IllegalResourceException { // Code copied from getReadLock. Fix! LockGrabber grabber = null; if (resource instanceof Node) grabber = LockGrabber.NODE_WRITE; else if (resource instanceof Relationship) grabber = LockGrabber.RELATIONSHIP_WRITE; else if (resource instanceof GraphProperties) grabber = LockGrabber.GRAPH_WRITE; else if (resource instanceof IndexLock) grabber = LockGrabber.INDEX_WRITE; try { if (grabber == null) { super.getWriteLock(resource, tx); return; } initializeTxIfFirst(); LockResult result = null; do { int eventIdentifier = getLocalTxId(); result = databaseOperations.receive( grabber.acquireLock( broker.getMaster().first(), databaseOperations.getSlaveContext(eventIdentifier), resource)); switch (result.getStatus()) { case OK_LOCKED: super.getWriteLock(resource, tx); return; case DEAD_LOCKED: throw new DeadlockDetectedException(result.getDeadlockMessage()); } } while (result.getStatus() == LockStatus.NOT_LOCKED); } catch (RuntimeException e) { databaseOperations.exceptionHappened(e); throw e; } }