public boolean rollbackClusterState(UUID txnId) {
        clusterServiceLock.lock();
        try {
            final LockGuard currentLock = getStateLock();
            if (!currentLock.allowsUnlock(txnId)) {
                return false;
            }

            logger.fine("Rolling back cluster state transaction: " + txnId);
            stateLockRef.set(LockGuard.NOT_LOCKED);

            // if state allows join after rollback, then remove all members which left during transaction.
            if (state.isJoinAllowed()) {
                node.getClusterService().getMembershipManager().removeAllMissingMembers();
            }
            return true;
        } finally {
            clusterServiceLock.unlock();
        }
    }
@Test(expected = NullPointerException.class)
    public void test_unlockClusterState_nullTransactionId() {
        clusterStateManager.rollbackClusterState(null);
    }