private void checkOverfull(final long maximumQueueDepthBytes, final long maximumQueueDepthMessages) { final long queueDepthBytes = _queue.getQueueDepthBytes(); final long queueDepthMessages = _queue.getQueueDepthMessages(); if ((maximumQueueDepthBytes >= 0L && queueDepthBytes > maximumQueueDepthBytes) || (maximumQueueDepthMessages >= 0L && queueDepthMessages > maximumQueueDepthMessages)) { Subject subject = Subject.getSubject(AccessController.getContext()); Set<SessionPrincipal> sessionPrincipals = subject.getPrincipals(SessionPrincipal.class); if (!sessionPrincipals.isEmpty()) { SessionPrincipal sessionPrincipal = sessionPrincipals.iterator().next(); if (sessionPrincipal != null) { if (_overfullReported.compareAndSet(false, true)) { _eventLogger.message(_queue.getLogSubject(), QueueMessages.OVERFULL(queueDepthBytes, maximumQueueDepthBytes, queueDepthMessages, maximumQueueDepthMessages)); } final AMQPSession<?, ?> session = sessionPrincipal.getSession(); _blockedSessions.add(session); session.block(_queue); } } } }